简单配置文件了解
- 系统: 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
网友评论