Docker 默认配置文件不生效
Posted on 2016-2-28 in Docker
最近的工作需要跟 Docker 打交道,并且搭建了一个私有仓库在本地环境存储相应的 Docker 镜像,但是在往私有仓库(非HTTPS)推镜像的时候,出现了 x509: certificate signed by unknown authority
的错误,Google 后得知解决方法是在 Docker 运行的时候添加 --insecure-registry
选项,或者修改 /etc/default/docker
文件增加一个配置项。
我选择 option 2。于是诡异的事情发生了。
我的系统是 Ubuntu 15.04,Docker 版本是 1.10.2(写本文的时候是最新的稳定版)。
按照网上的解决方案,我在 /etc/default/docker
中增加了一行 DOCKER_OPTS="--insecure-registry xxx.sample.com:5000"
配置项,来表明我需要增加一个私有仓库,并且它是不安全的,但是我不care。
然后重启 Docker 服务,重新推镜像,发现还是出现了同样的错误,用 ps aux | grep docker
发现 docker 的 COMMAND 是 /usr/bin/docker daemon -H fd://
,也就是说,我的设置并没有生效。。。
又开始一轮 Google,关键字 docker configuration file not work。终于,在 StackOverflow 上找到了一个解释,并且发现早就有人提过相应的 bug 了。
先说原因,在 Ubuntu 15.04 中,systemd
取代了 Upstart
成为了默认的 init system
,而基于 systemd
的系统,不再从 /etc/default
中读取配置文件,
那么,如何解决呢?
1.修改 /lib/systemd/system/docker.service
...
[Service]
ExecStart=/usr/bin/docker -d -H fd:// $DOCKER_OPTS
...
EnvironmentFile=-/etc/default/docker
...
2.然后执行
# systemctl daemon-reload
# systemctl restart docker
3.确认 /etc/default/docker
被加载
[email protected]:~$ ps aux | grep docker
root 772 0.0 0.4 411004 37120 ? Ssl 2月28 0:14 /usr/bin/docker daemon -H fd:// --insecure-registry xxx.sample.com:5000
搞定!
参考文档: