服务器重启后 Docker Compose 容器如何自动恢复运行

要想服务器重启后 Docker Compose 容器自动恢复,关键在于在 docker-compose.yml 中正确配置 restart 策略,通常推荐生产环境使用 unless-stopped 或 always,并确保 Docker 服务本身设为开机自启。

先说结论:配置重启策略是基础,但必须配合 Docker 守护进程的开机自启才能生效。

  • 适合:生产环境长期运行的服务
  • 先准备:确认 docker-compose.yml 配置
  • 验收:重启服务器后检查容器状态

命令速用版

version: '3.8'
services:
  web:
    image: nginx:alpine
    restart: unless-stopped

将上述配置保存为 docker-compose.yml,并使用 docker-compose up -d 启动。

为什么会这样

Docker 容器的自动恢复机制由 Docker 守护进程监听容器状态事件触发,而非 Compose 自身轮询。当容器终止时,守护进程根据重启策略决定是否调用 docker start 操作。这一机制保证了即使宿主机重启,只要 Docker 服务启用,配置了适当策略的容器仍能恢复运行。

分步处理

1. 编辑配置文件:在 docker-compose.yml 的服务层级添加 restart 字段,可选值包括 no、on-failure、always、unless-stopped。

2. 启用 Docker 服务:确保操作系统层面 Docker 守护进程开机自启,执行 systemctl enable docker。

3. 重新部署:运行 docker-compose up -d 使配置生效,旧容器会被新配置替换。

怎么验证是否生效

1. 查看状态:使用 docker ps 确认容器正在运行。

2. 模拟重启:执行 reboot 重启服务器,登录后再次运行 docker ps 检查容器是否自动拉起。

3. 检查策略:使用 docker inspect -f "{{.HostConfig.RestartPolicy.Name}}" 容器名 确认策略已应用。

常见坑

1. 手动停止的影响:除非使用 always 策略,否则若容器被手动 docker stop 停止,unless-stopped 策略下不会自动重启。

2. 数据持久化:重启恢复不代表数据不丢失,关键数据必须挂载卷(volumes)到宿主机。

3. 启动依赖:若服务依赖数据库,需配合 depends_on 或健康检查,避免容器启动后因依赖未就绪而反复重启。

参考来源

  • Docker Compose 重启策略全解析
  • 揭秘 Docker 容器崩溃后如何自动恢复:3 个你必须知道的编排技巧-CSDN 博客
  • 服务器重启后如何自动重启 Docker 容器?
  • 服务器异常关机后 Docker 恢复指南:从排查到启动的全流程解析
  • docker 容器为啥会开机自启动

原文链接:https://www.zjcp.cc/ask/10102.html

posted @ 2026-05-07 04:01  茶猫云呀  阅读(17)  评论(0)    收藏  举报