美文网首页
L2 - docker简答配置了解

L2 - docker简答配置了解

作者: Fonzie | 来源:发表于2018-07-09 22:03 被阅读18次

    简单配置文件了解

    • 系统: centos 7.4

    在centos7.x+系统中安装好docker后有三个文件是我们需要了解的:

    • /etc/docker
    # ll /etc/docker/
    
    总用量 8
    -rw-r--r--. 1 root root  67 6月  20 22:59 daemon.json
    -rw-------. 1 root root 244 6月  10 15:38 key.json
    

    这个目录默认在docker安装好后没有启动docker守护进程的情况下是没有的,只有在第一次启动了docker后才会被自动创建。启动docker的方法systemctl start docker或者service docker start

    • key.json文件
    # cat /etc/docker/key.json 
    {"crv":"P-256","d":"GTjK4aFUkaoRM96XeFx8YezxmT5PLNcIHkz_F_62Y7E","kid":"RVU4:65O7:PG7T:4T6R:HVQM:WASD:GEF7:A5JS:DSG3:7IGX:4XJQ:M2I3","kty":"EC","x":"jGKwG_3DDk7An7xzHxLx9kpYRQzBHFabQFC2YrNKhUU","y":"3Je1EP1M0Qz2L5KVBKq7KIMZRy26jPY9WO6M0cjz4X0"}
    

    这是Docker在连接到其他TLS服务器时使用的web格式的TLS连接的docker密钥。他在docker第一次启动时由docker引擎自动生成。

    • daemon.json文件
    {
      "registry-mirrors": ["http://xxxxxx.daocloud.io"],
      "log-driver": "journald",
      "log-opts": {
        "tag": "{{.ImageName}}/{{.Name}}/{{.ID}}"
      }
    }
    

    这个配置文件是我们手动创建的,docker并不会自动创建。在这个配置文件中我们可以对docker守护进程进行配置,比如这里我们把docker的logs交给了centos 7 的journald管理日志,并设置了加速仓库地址,同时也是一个私人的docker仓库。

    • /usr/lib/systemd/system/docker.service
    # ll /usr/lib/systemd/system/docker.service 
    -rw-r--r-- 1 root root 1161 4月  26 19:12 /usr/lib/systemd/system/docker.service
    

    这个配置文件是将docker守护进程的守护交给了systemd管理和守护。这个配置的作用很多,比如我们后面会所到的目录的默认路径的修改是可以通过这个地方修改的。

    这个文件严格区分大小写,格式也是非常严格的。

    # cat /usr/lib/systemd/system/docker.service 
    [Unit]
    Description=Docker Application Container Engine
    Documentation=https://docs.docker.com
    After=network-online.target firewalld.service
    Wants=network-online.target
    
    [Service]
    Type=notify
    # the default is not to use systemd for cgroups because the delegate issues still
    # exists and systemd currently does not support the cgroup feature set required
    # for containers run by docker
    ExecStart=/usr/bin/dockerd --graph /opt/docker 
    ExecReload=/bin/kill -s HUP $MAINPID
    # Having non-zero Limit*s causes performance problems due to accounting overhead
    # in the kernel. We recommend using cgroups to do container-local accounting.
    LimitNOFILE=infinity
    LimitNPROC=infinity
    LimitCORE=infinity
    # Uncomment TasksMax if your systemd version supports it.
    # Only systemd 226 and above support this version.
    #TasksMax=infinity
    TimeoutStartSec=0
    # set delegate yes so that systemd does not reset the cgroups of docker containers
    Delegate=yes
    # kill only the docker process, not all processes in the cgroup
    KillMode=process
    # restart the docker process if it exits prematurely
    Restart=on-failure
    StartLimitBurst=3
    StartLimitInterval=60s
    
    [Install]
    WantedBy=multi-user.target
    
    • /var/lib/docker/
    # ll /var/lib/docker/
    总用量 4
    drwx------.  2 root root   24 6月  10 15:38 builder
    drwx--x--x.  3 root root   20 6月  10 15:38 containerd
    drwx------.  4 root root  150 6月  10 15:55 containers
    drwx------.  3 root root   22 6月  10 15:38 image
    drwxr-x---.  3 root root   19 6月  10 15:38 network
    drwx------. 27 root root 4096 7月   9 21:26 overlay2
    drwx------.  4 root root   32 6月  10 15:38 plugins
    drwx------.  2 root root    6 7月   9 21:25 runtimes
    drwx------.  2 root root    6 6月  10 15:38 swarm
    drwx------.  2 root root    6 7月   9 21:25 tmp
    drwx------.  2 root root    6 6月  10 15:38 trust
    drwx------.  2 root root   25 6月  10 15:38 volumes
    

    这个目录下面存放了我们的docker镜像配置、容器信息、网络配置、swarm配置、volumes配置等。
    如果我们修改了或者删除了这个目录,重启docker后我们的docker会被重置为看上去的初始化,比如docker images查不到镜像,docker ps -a查不到容器。

    简单的修改配置文件

    实践如何修改默认的/var/lib/docker目录。

    • 软链接
      把现有的/var/lib/docker目录移到其他的目录去,然后通过软链接的方式把移动过去所在的目录链过来:
    $ sudo mv /var/lib/docker /opt/data
    $ sudo cd /var/lib 
    $ sudo ln -s /opt/data/docker docker
    
    • 修改/usr/lib/systemd/system/docker.service
    $ sudo  cat /usr/lib/systemd/system/docker.service 
    [Unit]
    Description=Docker Application Container Engine
    Documentation=https://docs.docker.com
    After=network-online.target firewalld.service
    Wants=network-online.target
    
    [Service]
    Type=notify
    # the default is not to use systemd for cgroups because the delegate issues still
    # exists and systemd currently does not support the cgroup feature set required
    # for containers run by docker
    ExecStart=/usr/bin/dockerd --graph /opt/docker 
    ExecReload=/bin/kill -s HUP $MAINPID
    # Having non-zero Limit*s causes performance problems due to accounting overhead
    # in the kernel. We recommend using cgroups to do container-local accounting.
    LimitNOFILE=infinity
    LimitNPROC=infinity
    LimitCORE=infinity
    # Uncomment TasksMax if your systemd version supports it.
    # Only systemd 226 and above support this version.
    #TasksMax=infinity
    TimeoutStartSec=0
    # set delegate yes so that systemd does not reset the cgroups of docker containers
    Delegate=yes
    # kill only the docker process, not all processes in the cgroup
    KillMode=process
    # restart the docker process if it exits prematurely
    Restart=on-failure
    StartLimitBurst=3
    StartLimitInterval=60s
    
    [Install]
    WantedBy=multi-user.target
    

    注意上文中的ExecStart=/usr/bin/dockerd --graph /opt/docker其中--graph就指定了存储路径,在下一次重启docker进程后将会在/opt/docker创建docker的配置。如果想保留原先的数据就直接把现有的/var/lib/docker复制/移动 到/opt/docker下。

    修改后保存配置,重启docker服务:

    $ sudo systemctl daemon-reload
    $ sudo systemctl restart docker
    $ sudo ll /opt/docker/
    总用量 0
    drwx------. 2 root root 24 7月   9 22:01 builder
    drwx--x--x. 3 root root 20 7月   9 22:01 containerd
    drwx------. 2 root root  6 7月   9 22:01 containers
    drwx------. 3 root root 22 7月   9 22:01 image
    drwxr-x---. 3 root root 19 7月   9 22:01 network
    drwx------. 3 root root 40 7月   9 22:01 overlay2
    drwx------. 4 root root 32 7月   9 22:01 plugins
    drwx------. 2 root root  6 7月   9 22:01 runtimes
    drwx------. 2 root root  6 7月   9 22:01 swarm
    drwx------. 2 root root  6 7月   9 22:01 tmp
    drwx------. 2 root root  6 7月   9 22:01 trust
    drwx------. 2 root root 25 7月   9 22:01 volumes
    

    相关文章

      网友评论

          本文标题:L2 - docker简答配置了解

          本文链接:https://www.haomeiwen.com/subject/ikqxpftx.html