收起左侧

【教程】docker容器关机重启 不能停止和自动启动的解决

6
回复
714
查看
[ 复制链接 ]

2

主题

35

回帖

0

牛值

江湖小虾

2026-4-22 20:29:54 显示全部楼层 阅读模式

故障问题

docker容器 关机、重启 不能正常停止和恢复

重启后,UI显示异常退出,退出代码255

主要对象

restart: unless-stopped

故障原因和影响

关机时,系统没有优雅处理Docker容器的停止

Docker 守护进程(dockerd)直接被停止,导致容器立即停止,可能引发:

  • 未持久化的数据丢失‌(如内存中的临时数据)
  • 数据库事务未提交‌,造成数据不一致
  • 网络连接异常中断‌,客户端请求失败
  • UI报错,看着难受
  • 重启无法恢复运行容器

解决方案

分别创建 关机脚本 和 开机脚本
运行用户为root

注:可以使用 应用商店中,Lng、RRorg提供的任务计划,比较简便

关机脚本

#!/bin/bash

# 备份位置
SAVE_FILE="/etc/docker/active_containers.list"

# 获取所有容器ID
RUNNING_IDS=$(docker ps -q)

# 清空记录文件
> "$SAVE_FILE"

if [ -n "$RUNNING_IDS" ]; then
    echo "检查容器是否为 unless-stopped"
    for ID in $RUNNING_IDS; do
        POLICY=$(docker inspect --format='{{.HostConfig.RestartPolicy.Name}}' "$ID")
        if [ "$POLICY" == "unless-stopped" ]; then
            echo "$ID" >> "$SAVE_FILE"
        fi
    done
    # 优雅停止
    docker stop $RUNNING_IDS
fi

开机脚本

#!/bin/bash
# 记录文件
SAVE_FILE="/etc/docker/active_containers.list"

if [ -s "$SAVE_FILE" ]; then
    # 将文件内容读取为一行空格分隔的 ID
    CONTAINERS_TO_START=$(cat "$SAVE_FILE" | tr '\n' ' ')
    if [ -n "$CONTAINERS_TO_START" ]; then
        echo "正在启动 unless-stopped 容器"
        docker start $CONTAINERS_TO_START
    else
        echo "没有需要启动的 unless-stopped 容器"
    fi
    # 不清空 正常关机才清空 避免意外断 电没数据
    # > "$SAVE_FILE"
fi

效果预览

1.png2.png

3.png

收藏
送赞 1
分享

本帖子中包含更多资源

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

x

2

主题

35

回帖

0

牛值

江湖小虾

2026-4-22 21:07:36 楼主 显示全部楼层
建议管理团队收录功能。

4

主题

34

回帖

0

牛值

系统先锋体验团🛩️

2026-4-22 23:53:20 显示全部楼层

curse

ing

4

主题

92

回帖

0

牛值

初出茅庐

2026-4-23 11:12:54 显示全部楼层
这不是飞牛该考虑的问题吗?
确实是飞牛应该做的 🤣🤣🤣  详情 回复
2026-4-23 14:21

2

主题

35

回帖

0

牛值

江湖小虾

2026-4-23 14:21:01 楼主 显示全部楼层
yibulada 发表于 2026-4-23 11:12
这不是飞牛该考虑的问题吗?

确实是飞牛应该做的 🤣🤣🤣

1

主题

15

回帖

0

牛值

江湖小虾

很久以前就有这个问题了,之前就有提到飞牛关机重启时对docker的操作“不优雅”,不过我技术能力有限,没敢动手,就一直等着希望官方修复,看来官方应该是不会修复了

可能反馈到 意见建议 或者 BUG反馈 官方会处理。 我之前有反馈过 开发应用 没有获取用户id 和 是否管理员的途径 , 只能做二次登入 官方很快就加了,然后应用我自己最近没空做完。 这个其实 修改下 docker.service  详情 回复
昨天 23:01

2

主题

35

回帖

0

牛值

江湖小虾

昨天 23:01 楼主 显示全部楼层
cwt 发表于 2026-6-4 19:19
很久以前就有这个问题了,之前就有提到飞牛关机重启时对docker的操作“不优雅”,不过我技术能力有限,没敢 ...

可能反馈到 意见建议 或者 BUG反馈 官方会处理。
我之前有反馈过 开发应用 没有获取用户id 和 是否管理员的途径 ,
只能做二次登入 官方很快就加了,然后应用我自己最近没空做完。

这个其实 修改下 docker.service
插入下面内容就可以解决

[Service]
# 在 Docker 准备停止前,立即执行保存脚本
ExecStop=/etc/docker/stop_save.sh
# 在 Docker 启动成功后,立即执行恢复脚本
ExecStartPost=/etc/docker/start_restore.sh

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

本版积分规则