在不同系统上配置运行Docker
成功安装Docker之后,docker
后台将会以默认的配置运行。
在一个生产环境里,系统管理员通常会根据公司(或组织)的具体要求来配置docker
后台的启动和停止。在大多数境况下,系统管理员会安装一个进程管理器,例如,SysVinit
,Upstart
或 systemd
去管理 docker
后台的启动和关闭。
直接运行 Docker 后台
docker
后台可以使用 -d
参数直接运行。默认情况下,它会在 unix:///var/run/docker.sock
上监听:
$ docker daemon
INFO[0000] +job init_networkdriver()
INFO[0000] +job serveapi(unix:///var/run/docker.sock)
INFO[0000] Listening for HTTP on unix (/var/run/docker.sock)
...
...
直接配置 Docker 后台
如果你通过运行docker daemon
来替代进程管理器去直接运行docker
后台,你可以在docker
后面追加配置选项直接运行命令。其他的选项会被传递到docker
后台去配置它。
一些后台的配置选项:
标志 | 描述 |
---|---|
-D , --debug=false | 允许或禁止debug模式。默认是false。 |
-H ,--host=[] | 连接的后台 socket(s) |
--tls=false | 允许或禁止 TLS。默认false。 |
这里有一个使用配置选型运行docker
后台的例子:
$ docker daemon -D --tls=true --tlscert=/var/docker/server.pem --tlskey=/var/docker/serverkey.pem -H tcp://192.168.59.3:2376
这些选型:
- 允许
-D
(debug) 模式。 - 设置
tls
的值为true,使用--tlscert
和--tlskey
分别指定服务证书和密匙。 - 监听连接在
tcp://192.168.59.3:2376
上。
完整的命令行介绍,请参考这里。
Ubuntu(乌班图)
自14.04
起,Ubuntu使用Upstart
作为它的进程管理器。默认情况下,Upstart
的工作路径在 /etc/init
,docker
Upstart job会在查找t/etc/init/docker.conf
。
在Ubuntu上成功安装完 Docker 之后,你可以使用Upstart
去检查Docker的运行状态:
$ sudo status docker
docker start/running, process 989
运行 Docker
你可以使用如下命令去启动/停止/重启docker
后台:
$ sudo start docker // 启动
$ sudo stop docker // 停止
$ sudo restart docker // 重启
配置 Docker
你可以通过修改 /etc/default/docker
文件中的DOCKER_OPTS
变量来配置你的docker
后台。
去配置 Docker 选项:
-
使用一个拥有
sudo
或root
权限的用户登录到主机。 -
如果你的主机上没有
/etc/default/docker
文件,先创建它。这取决于你是如何安装Docker,可能你已经拥有这个文件了。 -
使用你喜欢的编辑器打开这个文件。
$ sudo vi /etc/default/docker
-
在文件最后面添加一个
DOCKER_OPTS
变量(或者修改)。这些选项会被追加到docker
后台命令之后。
DOCKER_OPTS="-D --tls=true --tlscert=/var/docker/server.pem --tlskey=/var/docker/serverkey.pem -H tcp://192.168.59.3:2376"
这些选项:
- 允许
-D
(debug) 模式 - 设置
tls
的值为true,使用--tlscert
和--tlskey
分别指定服务证书和密匙。
- 监听连接在
tcp://192.168.59.3:2376
上。
完整的命令行介绍,请参考这里。
-
保存并关闭文件。
-
重启
docker
后台。$ sudo restart docker
-
验证
docker
后台运行的详情,可以使用ps
命令。$ ps aux | grep docker | grep -v grep
Logs(日志)
Upstart
默认日志路径是 /var/log/upstart
,docker
后台的日志路在 /var/log/upstart/docker.log
$ tail -f /var/log/upstart/docker.log
INFO[0000] Loading containers: done.
INFO[0000] docker daemon: 1.6.0 4749651; execdriver: native-0.2; graphdriver: aufs
INFO[0000] +job acceptconnections()
INFO[0000] -job acceptconnections() = OK (0)
INFO[0000] Daemon has completed initialization
CentOS / Red Hat Enterprise Linux / Fedora
自 7.x
起,CentOS 和RHEL 使用systemd
作为默认的进程管理器。而Fedora,自 21
版本也使用 systemd
作为它的进程管理器。
在CentOS/Red Hat Enterprise Linux/Fedora上成功安装完 Docker 之后, 你可以使用如下方法检查Docker的运行状态:
$ sudo systemctl status docker
运行 Docker
你可以使用如下命令去启动/停止/重启 docker
后台:
$ sudo systemctl start docker
$ sudo systemctl stop docker
$ sudo systemctl restart docker
如果你需要Docker自动启动,你可以这样:
$ sudo systemctl enable docker
配置 Docker
你可以通修改 /etc/sysconfig/docker
文件中的 other_args
变量来配置 docker
后台。在 CentOS 7.x 和RHEL 7.x中,变量的名字是 OPTIONS
但是,在CentOS 6.x 和RHEL 6.x,叫 other_args
。在这样小节里,我们将使用CentOS 7.x 作为配置例子来演示 docker
后台的配置。
默认情况下,systemd服务会存放在/etc/systemd/service
,/lib/systemd/system
或 /usr/lib/systemd/system
里。根据你的系统你可以在上述的三个目录下找到 docker.service
文件。
配置Docker后台选项:
-
使用一个拥有
sudo
或root
权限的用户登录到主机。
-
如果你的主机上没有
/etc/default/docker
文件,先创建它。这取决于你是如何安装Docker,可能你已经拥有这个文件了。
-
使用你喜欢的编辑器打开这个文件。
$ sudo vi /etc/sysconfig/docker
-
在文件最后面添加一个
DOCKER_OPTS
变量(或者修改)。这些选项会被追加到docker
后台命令之后。
OPTIONS="-D --tls=true --tlscert=/var/docker/server.pem --tlskey=/var/docker/serverkey.pem -H tcp://192.168.59.3:2376"
这些选项:
- 允许
-D
(debug) 模式 - 设置
tls
的值为true,使用--tlscert
和--tlskey
分别指定服务证书和密匙。
- 监听连接在
tcp://192.168.59.3:2376
上。
完整的命令行介绍,请参考这里。
-
保存并关闭文件。
-
重启
docker
后台。$ sudo service docker restart
-
验证
docker
后台运行的详情,可以使用ps
命令。$ ps aux | grep docker | grep -v grep
Logs(日志)
systemd拥有属于自己日志系统,被称为“ journal”。docker
后台的日志可以使用journalctl -u docker
指令去查看。
$ sudo journalctl -u docker
May 06 00:22:05 localhost.localdomain systemd[1]: Starting Docker Application Container Engine...
May 06 00:22:05 localhost.localdomain docker[2495]: time="2015-05-06T00:22:05Z" level="info" msg="+job serveapi(unix:///var/run/docker.sock)"
May 06 00:22:05 localhost.localdomain docker[2495]: time="2015-05-06T00:22:05Z" level="info" msg="Listening for HTTP on unix (/var/run/docker.sock)"
May 06 00:22:06 localhost.localdomain docker[2495]: time="2015-05-06T00:22:06Z" level="info" msg="+job init_networkdriver()"
May 06 00:22:06 localhost.localdomain docker[2495]: time="2015-05-06T00:22:06Z" level="info" msg="-job init_networkdriver() = OK (0)"
May 06 00:22:06 localhost.localdomain docker[2495]: time="2015-05-06T00:22:06Z" level="info" msg="Loading containers: start."
May 06 00:22:06 localhost.localdomain docker[2495]: time="2015-05-06T00:22:06Z" level="info" msg="Loading containers: done."
May 06 00:22:06 localhost.localdomain docker[2495]: time="2015-05-06T00:22:06Z" level="info" msg="docker daemon: 1.5.0-dev fc0329b/1.5.0; execdriver: native-0.2; graphdriver: devicemapper"
May 06 00:22:06 localhost.localdomain docker[2495]: time="2015-05-06T00:22:06Z" level="info" msg="+job acceptconnections()"
May 06 00:22:06 localhost.localdomain docker[2495]: time="2015-05-06T00:22:06Z" level="info" msg="-job acceptconnections() = OK (0)"
注意:使用和配置journal是一个高级话题,已经超出本章节覆盖的范围。