标签归档:Docker

使用Docker部署phpMyAdmin

其实直接安装phpMyAdmin已经十分简单,一般来说也并不会有一定要用Docker安装的理由。主要目的还是练手吧。

首先拉取镜像

docker pull phpmyadmin/phpmyadmin

执行镜像

docker run --name phpMyAdmin -d -e PMA_HOST=SERVER_IP -e PMA_PORT=3306 -p 8081:80 phpmyadmin/phpmyadmin

然后访问以下地址就可以了

http://SERVER_IP:8081/

查看运行状态

root@ubuntu:~# docker ps
CONTAINER ID        IMAGE                   COMMAND                CREATED             STATUS              PORTS                  NAMES
ac8bc1c0e023        phpmyadmin/phpmyadmin   "/run.sh phpmyadmin"   15 minutes ago      Up 15 minutes       0.0.0.0:8081->80/tcp   phpMyAdmin

尝试登陆phpMyAdmin,如果显示连接失败错误,常见的原因有两个

  • 未修改bind-address

进入mysql的配置文件,/etc/mysql/目录下有mysqld.cnf,my.cnf等多个配置文件,找到其中的以下字段,注释掉

bind-address = 127.0.0.1

然后重启mysql

  • 未开启root账户远程登陆

进入mysql shell,执行赋权命令

mysql> grant all privileges on *.* to 'root'@'%' identified by 'YOUR_PASSWORD';
mysql> flush privileges;

Ref: https://docs.phpmyadmin.net/en/latest/setup.html#installing-using-docker

Docker常用操作

  • 拉取镜像
docker pull [image:tag]
  • 查看镜像
docker images
  • 查看所有容器
docker ps -a
  • 停止/删除正在运行的容器
docker stop/rm [container_id]
  • 删除镜像
docker rmi [repository]
  • 以daemon方式启动容器
docker run -t -d --privileged=true --restart=always -p 8080:80 -p 3306:3306 centos:latest /usr/sbin/init

参数说明:

-d: 以daemon方式运行container
-p: 端口转发,将容器的80端口绑定到主机的8080端口
--privileged=true: 使container中的root用户以真正的root权限运行
--restart=always: 重启后自动拉起container
  • 进入容器bash
docker exec -it [container_id] /bin/bash
  • 退出容器
exit

使用阿里云加速国内Docker镜像拉取

在之前的文章Ubuntu 16.04安装Docker(Linode)中,我们使用了官方提供的安装文档进行docker的安装和配置。但是,如果服务在国内,那么使用官方的更新源以及register源都将被网速极大的拖累。

这一次,阿里又站了出来,不得不说在国内的云服务上阿里提供了很大的帮助。首先,我们使用阿里源安装Docker Engine(说明文档)。

curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -

接下来,我们可以在阿里云的开发者平台上看到许多已经有的镜像,也可以点击页面上的创建我的容器镜像来创建自己的镜像。

点击创建我的容器镜像后,就会来到阿里云的服务面板。这里有个加速器标签,点击后就会得到一个专属的镜像加速地址

按照页面上的说明,将这个地址配置到服务器中:

sudo mkdir -p /etc/systemd/system/docker.service.d

sudo tee /etc/systemd/system/docker.service.d/mirror.conf <<-'EOF'
[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon -H fd:// --registry-mirror=https://xxxxxxxx.mirror.aliyuncs.com
EOF

sudo systemctl daemon-reload
sudo systemctl restart docker

然后再执行docker pull等操作的时候,就能够获得明显的加速效果了。

Docker私有仓库https错误解决

今天在公司执行docker pull命令时报了一个连接错误,如下:

[root@localhost ~]# docker pull registry.<domain>.com/rhel17:Maipo
Error response from daemon: Get https://registry.<domain>.com/v1/_ping: dial tcp <ip>:443: getsockopt: connection refused

在网上搜索到了以下解决方法:

修改或者增加daemon.json文件:

vim /etc/docker/daemon.json

内容如下

{ 
    "insecure-registries":[
        "registry.<domain>.com:<port>"
    ] 
}

Restart docker daemon

systemctl restart docker.service

Ubuntu 16.04安装Docker(Linode)

官方已经对如何安装有了详细的文档,本文仅对Linode安装的区别进行解释。(官方文档)

首先执行apt更新

apt update

向系统添加新的GPG Key

sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

将docker源加入apt

echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list

执行apt更新

apt update

安装依赖包(Linode版Ubuntu需要安装这些包)

apt-get install dmsetup
dmsetup mknodes

安装docker

apt install docker-engine

参考:https://github.com/docker/docker/issues/23347