CoreOS下的Docker配置是通过flannel unit来实现的
通过命令可以看出配置文件的默认位置
systemctl cat docker
# /run/systemd/system/docker.service
[Unit]
Requires=torcx.target
After=torcx.target
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=containerd.service docker.socket network-online.target
Wants=network-online.target
Requires=containerd.service docker.socket
[Service]
EnvironmentFile=/run/metadata/torcx
Type=notify
EnvironmentFile=-/run/flannel/flannel_docker_opts.env
Environment=DOCKER_SELINUX=--selinux-enabled=true
/run/flannel/flannel_docker_opts.env
这个文件默认是没有的,所以我们创建对应目录和文件即可。
补充:如果docker run的时候报如下错误:
Error response from daemon: error creating overlay mount to /var/lib/docker/overlay2/007018df729636dd7c3d22ea683d13b6f5f0657b7c2c9e0014c671id argument.
则需要修改/run/systemd/system/docker.service文件中的这一项 Environment=DOCKER_SELINUX=--selinux-enabled=false 然后 systemctl daemon-reload systemctl restart docker
然后编辑文件内容如下:
vi flannel_docker_opts.env
DOCKER_OPTS="--registry-mirror=https://xxxxx.mirror.aliyuncs.com"
保存后,启动docker服务即可
systemctl daemon-reload
systemctl restart docker
最后验证一下
ps aux |grep docker
root 831 1.3 0.8 272276 32908 ? Ssl 16:55 0:00
/run/torcx/bin/dockerd --host=fd:// --containerd=/var/run/docker/libcontainerd/docker-
containerd.sock --selinux-enabled=true --registry-mirror=https://xxxxx.mirror.aliyuncs.com
这样就成功了,很简单吧。
补充:
大家有没有发现docker.service配置文件的路径在/run/下,我一直觉得很奇怪/run/应该都是运行时,果然发现系统或服务重启后,docker.service中的配置经常会还原了。一直想解决的办法,经过尝试,可以通过如下方法处理:
# 复制/run/里面的配置文件到/etc/下
cp /run/systemd/system/docker.service /etc/systemd/system/docker.service
# 重新加载服务
systemctl daemon-reload
# 重启服务
systemctl restart docker.service
# 验证
systemctl cat docker.service
可以看到文件已经变更过来了。