docker在systemd下的配置问题
问题说明最近在debian8上装了个docker,但是因为存储空间的问题,需要把docker的存放路径改一下。按照官方文档的说法,只要修改/etc/default/docker里的DOCKER_OPTS,加上-g参数即可:DOCKER_OPTS="-g /path/to/dockerdata"但是这样改过以后重启docker,发现docker仍然在使用默认的/var/lib/docker
问题说明
最近在debian8上装了个docker,但是因为存储空间的问题,需要把docker的存放路径改一下。按照官方文档的说法,只要修改/etc/default/docker里的DOCKER_OPTS,加上-g参数即可:
DOCKER_OPTS="-g /path/to/dockerdata"
但是这样改过以后重启docker,发现docker仍然在使用默认的/var/lib/docker,用ps看了一下,-g参数并没有被传递给dockerd。
去看了/etc/init.d/docker,也没看出什么不对来,只是觉得ps里看到的命令与这里不太一样。
百思不得其解。
放狗一搜才知道,原来是systemd搞的鬼。
systemd
这也不是新东西了,很多前卫的发行版早就已经用它把init替换掉了,然而我是不太喜欢,倒不是因为传说中它的太复杂或是二进制日志之类的,而是单纯因为懒,毕竟init比较熟简单也熟悉一些。
现在终于debian也用上了,只是我还没有注意到,直到这次碰到问题。
docker当然也不是不支持systemd,只是它的支持是有BUG的。那就是它的systemd配置文件里忘记去读取并使用/etc/default/docker里的自定义配置了……
所以,参照这个issue可以得到解决:
解决方案
在 /etc/systemd/system/multi-user.target.wants 目录(不同的发行版可能不一样,这个是debian8的)中找到 docker.service ,在其中找到:
ExecStart=/usr/bin/dockerd -H fd://
这句,修改为:
ExecStart=/usr/bin/dockerd -H fd:// $DOCKER_OPTS
EnvironmentFile=-/etc/default/docker
然后重启:
systemctl daemon-reload
service docker restart
现在 DOCKER_OPTS 就成功生效了。
更多推荐
所有评论(0)