[i=s] 本帖最后由 llxx 于 2025-1-10 18:44 编辑 [/i]<br />
<br />
问题
自公测没多久就发现docker的重启策略restart unless-stopped不起作用,就算设置了重启后设置为unless-stopped容器都255退出,无法自启动。
经过对比飞牛的docker服务文件
/etc/systemd/system/docker.service
与原版服务文件
/lib/systemd/system/docker.service
后发现多了一行 ExecStop=/bin/sh -c "docker stop --time 3 $(docker ps -a -q)"
意为停止docker服务时强制3秒内关闭所有容器,也就是相当于关机时手动关闭了容器,那开机时自然不会自启动容器,因为你手动关闭了容器,而且是强制关闭的
解决方案
关闭docker服务和开机自启 web与ssh二选一
web

关闭docker服务和开机自启
ssh
sudo systemctl stop docker.service && sudo systemctl disable docker.service
同上web关闭docker服务和开机自启效果
更改配置文件
然后进ssh编辑 /etc/systemd/system/docker.service 文件,
注释这一行 ExecStop=/bin/sh -c "docker stop --time 3 $(docker ps -a -q)"
如下图 #ExecStop=/bin/sh -c "docker stop --time 3 $(docker ps -a -q)"

打开docker服务和开机自启
最后web界面打开docker服务和开机自启
或者ssh执行
sudo systemctl enable docker.service && sudo systemctl start docker.service
注意就目前看来,每次升级版本后都得重新来一遍,因为更新后docker.service都会被覆盖会默认
结束
后面重启设备后重启策略restart设置为unless-stopped的容器已可以自启,完美解决。
我记得我在公测没多久就反馈过这个问题,也提出了解决法案,不知为何没有修复。
还有改完之后可能会导致关机变慢,原因是docker容器不再是原来强制3秒关闭,会逐个慢慢关闭,docker容器关闭时间会影响你的关机速度。 |