附录B Docker配置

    在本书的很多地方我们都建议读者更改自己的Docker配置文件,在启动Docker宿主机时做一些永久性的改变。本附录会为读者达成这条最佳实践提供一些建议。在这种情境下,所使用的操作系统发行版就很重要了。

    大多数主流发行版的配置文件的位置列在表B-1中。

    表B-1 Docker配置文件位置

    发 行 版

    配 置 文 件

    Ubuntu/Debian/Gentoo

    /etc/default/docker

    OpenSuse/CentOS/Red Hat

    /etc/sysconfg/docker

    注意,有一些发行版把配置作为单个文件,而另外一些发行版使用一个目录或者多个文件。例如,在Red Hat企业版证书中,有一个叫/etc/sysconfig/docker/docker-storage的文件,习惯上它包含与Docker守护进程的存储选项有关的配置。

    如果读者所用的发行版没有和表B-1中的名字匹配的任何文件,那么值得检查一下/etc/docker文件夹,因为那里可能有相关的文件。

    在这些文件中,管理着传递给Docker守护进程启动命令的相关参数。例如,编辑的时候,下面这样的命令允许为宿主机上的Docker守护进程设置启动参数:

    1. DOCKER_OPTS=””

    例如,如果想把Docker根目录从默认的位置(/var/lib/docker)改到别的地方,用户可能会把之前的那条改成:

    1. DOCKER_OPTS=”-g /mnt/bigdisk/docker

    如果所用的发行版使用systemd配置文件(和/etc不同),那么还可以查找systemd文件夹下的docker文件中的ExecStart这一行,想要修改的话也可以修改。例如,这个文件可能位于/usr/lib/systemd/system/service/docker。下面是一个示例文件:

    1. [Unit]
    2. Description=Docker Application Container Engine
    3. Documentation=http://docs.docker.io
    4. After=network.target
    5. [Service]
    6. Type=notify
    7. EnvironmentFile=-/etc/sysconfig/docker
    8. ExecStart=/usr/bin/docker -d selinux-enabled
    9. Restart=on-failure
    10. LimitNOFILE=1048576
    11. LimitNPROC=1048576
    12. [Install]
    13. WantedBy=multi-user.target

    EnvironmentFile这一行把启动脚本指向了我们之前讨论过的有DOCKER_OPTS这项的文件。如果直接修改systemctl文件,需要运行systemctl daemon-reload命令,以便确保systemd守护进程采用了这个变化。

    只修改Docker守护进程的配置是不够的,为了采用这些变化,必须重启守护进程。注意,这会停止所有正在运行的容器,取消所有进行中的镜像下载。

    大多数现代Linux发行版都使用systemd来管理机器上的服务的启动。如果在命令行运行systemctl,获取好几页输出,那么宿主机就是在运行systemd。如果得到一个“command not found”消息,那么试一下B.1.2节中的方法。

    如果想要更改配置,可以按如下方式停止和启动Docker:

    1. $ systemctl stop docker
    2. $ systemctl start docker

    也可以简单地重启:

    1. $ systemctl restart docker

    通过下面这些命令来检查进度:

    1. $ journalctl -u docker
    2. $ journalctl -u docker -f

    这里的第一行会输出Docker守护进程的可用的日志,第二行输出任何新条目的日志。

    如果系统运行一个基于System V的init脚本,试一下运行service —status-all。如果返回一系列的服务,就可以使用service来重启新配置的Docker:

    1. $ service docker stop
    2. $ service docker start