Linux入门教程:Docker管理指南(1) – 配置和运行Docker, 在生产环境中,系统


成功安装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

解释如下:

启用了debug模式 设置tls为true并指定服务器证书和私钥 在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)"

相关内容