收起左侧

解决docker的unless-stopped容器自启动失败问题

4
回复
611
查看
[ 复制链接 ]

0

主题

0

回帖

0

牛值

江湖小虾

2026-1-12 09:29:11 显示全部楼层 阅读模式

1. 问题描述

docker容器重启策略restart设置了unless-stopped,并且在没有执行手动停止容器情况下,进行系统更新或重启,那么这些容器不会自启动。always的容器会正常自启动。

2. 临时解决方案

论坛中有用户分享了一个该问题的临时解决方案

简单来说,就是对 docker.service 文件进行修改,注释掉服务关闭时执行的强制关闭所有容器指令

问题:每次升级版本后都得重新来一遍,因为更新后docker.service都会被覆盖回默认状态

3. 基于drop-in机制的解决方案

通过学习临时解决方案可以发现,飞牛对 docker.service 文件进行了修改,导致重启策略为 unless-stopped 的容器不能自启动。那么我们也可以对服务配置文件进行修改,Unit 文件有一个 drop-in 覆盖机制允许在不修改主配置文件的情况下添加或覆盖特定设置

3.1 解决思路

增加ExecStartPost行

3.2 具体操作

  1. 开启ssh服务,并通过ssh登录设备,参考博客
  2. 编辑docker服务,生成覆盖配置
sudo systemctl edit docker.service
  1. 粘贴相关指令代码。仅需复制粘贴从 [Service] 开始的两行。上下相关的注释部分也贴在了下面,便于定位指令粘贴位置。
### Editing /etc/systemd/system/docker.service.d/override.conf
### Anything between here and the comment below will become the new contents of the file

[Service]
ExecStartPost=/bin/sh -c 'sleep 5; for c in $(docker ps -aq); do [ "$(docker inspect --format="{{.HostConfig.RestartPolicy.Name}}" "$c")" = "unless-stopped" ] && [ "$(docker inspect --format="{{.State.ExitCode}}" "$c")" != "0" ] && docker start "$c"; done'

### Lines below this comment will be discarded

### /etc/systemd/system/docker.service
# [Unit]

重启策略为unless-stopped且exit code不为0的机器。0表示为正常退出。

  1. 保存退出后检查覆盖配置,应该只有2行内容
cat /etc/systemd/system/docker.service.d/override.conf
  1. 重新加载服务配置文件
sudo systemctl daemon-reload
  1. 重启docker服务
sudo systemctl restart docker
  1. 检查容器是否如期启动
docker ps

4. 最后

在利用了drop-in机制的配置下,即使更新了飞牛系统,也不会影响我们对 docker.service 的修改

恳请大家批评指正!积极讨论,共同进步。

收藏
送赞
分享

13

主题

71

回帖

0

牛值

初出茅庐

2026-1-12 21:41:32 显示全部楼层

改成always就好了,2和3都是垃圾方案

我都是用always  详情 回复
2026-1-13 19:56

3

主题

14

回帖

0

牛值

江湖小虾

2026-1-12 16:08:01 显示全部楼层

有这个 ExecStopPre参数吗,就瞎写??!

0

主题

2

回帖

0

牛值

江湖小虾

2026-1-12 16:58:58 显示全部楼层

79B595A07B5FD61DB37466C016F14467.jpg
这样不是更好

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

10

主题

64

回帖

0

牛值

初出茅庐

2026-1-13 19:56:26 显示全部楼层
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=232772&ptid=50740][color=#999999]lianqq 发表于 2026-1-12 21:41[/color][/url][/size] 改成always就好了,2和3都是垃圾方案[/quote]

我都是用always

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则