先说一下我的环境:
遇到的问题:
systemctl stop docker
systemctl disable docker
systemctl stop docker
根本不能停掉 docker,过段时间依然会诡异重启.分析原因:
启动 docker 的时候,会连带启动一个定时器任务docker-cleanup.timer
,这个 timer 任务会每隔 1 小时运行
docker-cleanup.service
这个任务来清理 dead 状态的容器.
关闭 docker 的时候,docker-cleanup.timer
这个任务不会被连带关闭,它依然每小时唤
docker-cleanup.service
一次,这个清理任务又依赖于docker.service
服务,又继续把 docker 唤醒,所以最后造成每隔一小时 docker 的诡异重启.
解决方案:
Requires=docker.service
换成BindsTo=docker.service
即可,这样关闭 docker 的时候,会连带关闭这两个服务,同理如果关闭docker-cleanup.timer
同样会关闭docker.service
我的疑惑:
搜索了中文圈,发现没有人提到过这个问题。但这是一个很常见的 Bug,难道没人碰到过吗?
google 英文检索之后发现 RedHat 的bug 提交报告里面有这个问题记录. 但看时间已经在 2017 年 5 月份就解决了,为什么 Centos 至今 yum 安装的 docker 还有这个问题?
1
qoo2019 2019-11-06 16:58:19 +08:00
还没没关注过这个问题
可能有两个原因: 1、部分新版已经转成 podman 2、一般服务器上很少会有 docker stop 的需求 |
2
lishunan246 2019-11-06 16:59:00 +08:00 via Android
建议 systemctl mask docker
|
3
anubu 2019-11-06 17:02:37 +08:00
没说 dockerd 的版本,看你说的 clien 1.13.1 应该是一个比较老旧的版本了。
|
4
yzding OP @anubu dockerd 同 docker client 版本,1.13.1,阿里云 Centos7.6 和 腾讯云 Centos7.5 yum 安装的 docker 都有这个问题,AWS Linux 里面没有 cleanup 这个服务
|
5
anubu 2019-11-06 19:40:11 +08:00
所以你的两个疑惑应该都是版本老旧问题带来的。
1. docker1.13.1 时可能在中文圈没这么火,所以这个问题并不多。 2. 看 moby 仓库 release 记录 1.13.1 的发布日期时 2017 年 2 月份,所以这个修复当时可能并没有合入。 |
6
julyclyde 2019-11-11 17:04:03 +08:00
docker.socket 吧
|