成功安装Docker后,docker daemon以默认配置运行。
在生产环境中,系统管理员通常要根据具体环境来配置docker deamon。大多数情况下,系统管理员会使用如SysVinit, Upstart或systemd来管理docker daemon的启动和停止。
直接运行和配置docker daemon
直接运行docker daemon
docker daemon能直接使用dockerd执行。默认监听unix socket unix:///var/run/docker.sock。
- $ dockerd
- 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 daemon
如果你不是使用进程管理器而是直接使用dockerd运行的docker,你就可以在dockerd命令中设置参数来配置docker。
docker daemon一些可用参数如下:
-D, –debug=false:启用或禁用debug模式。默认这个是false。
-H,–host=[]:指定docker daemon监听的socket。
–tls=false:启用或禁用TLS。默认这个是false。
这是个直接在命令行配置docker的示例:
- dockerd -D –tls=true –tlscert=/var/docker/server.pem –tlskey=/var/docker/serverkey.pem -H tcp://192.168.59.3:2376
解释如下:
daemon调试
如上所述,我们可以设置日志等级为debug或使用-d启用debug模式来帮助我们获取daemon更详细的信息来查找问题。如果你遇到daemon无响应的情况,可以通过发送SIGUSR1到Docker daemon来强制获取所有线程完整的堆栈跟踪信息到daemon日志文件。通常使用linux系统的kill命令来发送这个信息。例如,kill -USR1 。
Ubuntu
Ubuntu 14.04使用Upstart作为进程管理器。默认情况下,Upstart jobs在/etc/init,docker的Upstart job在/etc/init/docker.conf。
当docker安装完成后,可以以下面这种方式使用Upstart来检查docker的运行状态:
- $ sudo status docker
- docker start/running, process 989
运行docker
你可以使用如下命令来启动/停止/重启docker daemon
- $ sudo start docker
- $ sudo stop docker
- $ sudo restart docker
配置docker
下面是描述在使用upstart作为进程管理器的系统上配置docker daemon。Ubuntu 15.04系统使用了systemd作为它的进程管理器。
在系统上的/etc/default/docker文件配置docker daemon。在这个文件找到DOCKER_OPTS并配置相关daemon参数。
配置daemon步骤如下:
1.登录进你的主机并切换到root权限。
2.如果系统没有/etc/default/docker文件,先创建,不过应该都有了。
3.打开这个文件
- $ sudo vi /etc/default/docker
4.把下面的参数添加到DOCKER_OPTS变量。这些参数会在docker daemon运行时附加上去。
- DOCKER_OPTS="-D –tls=true –tlscert=/var/docker/server.pem –tlskey=/var/docker/serverkey.pem -H tcp://192.168.59.3:2376"
5.保存并关闭文件。
6.重启docker daemon
$ sudo restart docker
7.检查docker daemon是否以你所设置的参数运行
- ps aux | grep docker | grep -v grep
日志
默认下upstart job的日志在/var/log/upstart,docker daemon的日志在/var/log/upstart/docker.log
- $ tail -f /var/log/upstart/docker.log
- INFO[0000] Loading containers: done.
- INFO[0000] Docker daemon commit=1b09a95-unsupported graphdriver=aufs version=1.11.0-dev
- INFO[0000] +job acceptconnections()
- INFO[0000] -job acceptconnections() = OK (0)
- INFO[0000] Daemon has completed initialization
CentOS / Red Hat Enterprise Linux / Fedora
CentOS/RHEL 7.x和Fedora 21使用systemd作为进程管理器。
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
此小节我们使用centos 7.x,即使用进程管理器systemd作为示例配置docker。
1.登录主机并切换到root权限。
2.创建目录/etc/systemd/system/docker.service.d
- $ sudo mkdir /etc/systemd/system/docker.service.d
3.创建文件/etc/systemd/system/docker.service.d/docker.conf
4.打开此文件
- $ sudo vi /etc/systemd/system/docker.service.d/docker.conf
5.覆盖docker.service文件中的ExecStart配置项来自定义你的daemon。配置如下:
[Service]
- ExecStart=
- ExecStart=/usr/bin/dockerd -H fd:// -D –tls=true –tlscert=/var/docker/server.pem –tlskey=/var/docker/serverkey.pem -H tcp://192.168.59.3:2376
6.保存关闭文件
7.应用配置
- $ sudo systemctl daemon-reload
8.重启daemon
- $ sudo systemctl restart docker
9.验证daemon是否以你所设置的参数运行
- $ ps aux | grep docker | grep -v grep
日志
systemd有它自己的日志系统,称为journal。docker daemon的日志可以使用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 commit=1b09a95-unsupported graphdriver=aufs version=1.11.0-dev"
- 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)"