Docker Compose 标准工作流与平滑更新
Docker Compose 是管理多容器微服务应用(如 Web + 数据库 + 缓存)的标准工具。
一、 典型工作流
- 项目启动(后台运行):
注:加上docker compose up -d--build参数可在启动前强制重新构建镜像。 - 状态与调试:
- 检查状态:
docker compose ps - 实时日志:
docker compose logs -f <服务名>
- 检查状态:
- 关闭项目(保留数据):
该命令会停止并移除容器和网络,但不会删除docker compose downdocker-compose.yml中定义的命名数据卷(Volumes)。 - 彻底卸载(删除数据):
加上docker compose down -v-v选项会删除命名卷与匿名卷,数据库中的数据会被永久抹除。
二、 容器平滑更新(三步法)
当远端有镜像发布更新时,最标准的更新流程不需要手动删容器,采用以下三步可实现应用零感/平滑升级,并自动清理垃圾:
[1. 拉取新镜像] ➔ [2. 智能重建容器 GV] ➔ [3. 清理废弃悬挂镜像]
1. 第一步:拉取最新镜像层
docker compose pull- 读取 YAML 配置中的标签(如
latest),到仓库拉取最新的镜像。
2. 第二步:执行 up 自动重建(核心)
docker compose up -d- 核心逻辑:Docker Compose 会对比本地容器和新拉取的镜像。如果发现镜像发生更新,它会自动停止旧容器,删除旧容器,并用新镜像启动新容器。
- 平滑性:未更新的其他关联服务(如数据库)在此期间保持正常运行,不受波及。
3. 第三步:清理废弃的旧镜像层
docker image prune -f- 容器升级后,原本的旧镜像会变成无标签的悬挂状态(Dangling),执行此命令可快速释放磁盘空间。
🚀 快捷一键更新链:
docker compose pull && docker compose up -d && docker image prune -f💡 生产案例:一键更新 CLIProxyAPI 容器
cd /root/cli-proxy-api/ && docker compose pull && docker compose up -d && docker image prune -f三、 常用更新快捷别名与 Agent 技能调优
为了提升运维效率,系统的终端环境变量 ~/.bashrc 中已注入快捷别名,可直接调用:
up-cli:一键平滑更新CLIProxyAPI代理网关。up-ignis:一键平滑更新Ignis知识库看板。up-cf:一键平滑更新Cloudflare Tunnel隧道网关。up-all:顺序平滑升级服务器上的所有容器并自动回收垃圾磁盘空间。
同时,该工作流已固化为 Agent 动态技能 docker-container-update(路径:~/.hermes/skills/devops/docker-container-update/SKILL.md)。当向 Agent 下发“检查并更新容器”指令时,Agent 会自动调用该技能在后台进行安全静默更新。
四、 配置强制重建
如果你没有更新远程镜像,只是修改了本地的 .env 环境变量或被挂载的配置文件,并希望强制重建容器:
docker compose up -d --force-recreate- 该参数会强制销毁当前容器并重新生成,无需理会镜像是否有变化。
相关链接
- Docker容器与镜像管理 单容器管理与 prune 回收机制
- Linux运维与文件传输 主机进程 top/free 占用监控