Docker容器自启动服务器重启

为什么要让 Docker 容器随服务器自动重启

刚接触 Docker 的朋友经常遇到一个问题:辛辛苦苦部署好的容器,服务器一重启就全停了,每次都要手动 docker start
尤其是在生产环境,这种操作既麻烦又容易漏掉关键服务。
Docker 自带了重启策略,可以让你指定容器在退出或系统重启后自动复活,无需人工干预。
下面按最实用的方式,一步步教你怎么设置。

准备工作:确认 Docker 服务已启用自启动

在配置容器之前,先确保 Docker 守护进程本身已经设置为开机自启。
如果 Docker 服务没起来,容器策略再完美也没用。

  • 执行 sudo systemctl status docker,看输出中是否有 Active: active (running)
  • 如果没有启用自启,运行 sudo systemctl enable docker --now 即可立即启动并设为开机启动。

方法一:创建容器时指定自启动策略(最推荐)

使用 docker run 创建新容器时,直接加上 --restart 参数。
常用的值有:

  • always:容器退出或服务器重启时自动重启,除非手动执行 docker stop
  • unless-stopped:和 always 类似,但如果容器被手动停止,则重启后不再自动启动。
  • on-failure:仅在容器因错误退出时重启,服务器重启时也会启动。

示例: 创建一个 Nginx 容器并设置为 always 重启

docker run -d --name my-nginx --restart always -p 80:80 nginx:latest

参数说明:

  • -d 后台运行
  • --restart always 指定自重启
  • -p 80:80 映射端口

执行完后,即使重启服务器,my-nginx 也会自动恢复运行。

方法二:对已有容器启用自启动(无需重建)

如果容器已经创建过了,不用删掉重建,使用 docker update 命令更新重启策略。

命令格式:

docker update --restart always 容器名或ID

实战:

  1. 先查看现有容器列表:docker ps -a
  2. 找到你想自启动的容器,比如 wp-blog
  3. 执行 docker update --restart always wp-blog
  4. 验证策略是否生效:docker inspect wp-blog | grep -i restart,应该能看到 "RestartPolicy": {"Name": "always"}

这个方法不影响容器内部配置,可以批量操作:

docker update --restart always $(docker ps -q)

注意:以上命令会作用于所有运行中的容器,谨慎使用。

避坑指南:常见错误与解决方案

1. 重启策略与 systemd 冲突

有些服务器使用 docker-compose 管理或自定义了 systemd 服务。
如果容器自身设置了 --restart always,而 systemd 服务也设置了 Restart=always,可能造成双重重启,导致日志疯狂刷。解决办法:统一用一种方式。
建议用 Docker 自己的重启策略,把 systemd 服务设为 Restart=no(或直接不设置)。

2. 停止容器后重启仍启动

如果你手动 docker stop 了一个 --restart always 的容器,重启服务器后它依然会启动。
这是因为 Docker 重启策略在停止时不会改变。
如果需要彻底禁用,用 docker update --restart no 容器名 修改策略。

3. 容器依赖顺序问题

如果 A 容器依赖 B 容器(例如 WordPress 依赖 MySQL),双方都设置 always 重启策略后,启动顺序不受控。
建议用 docker-composedepends_on 并结合 restart: always,或者使用更专业的编排工具。

验证方法:模拟重启并检查结果

配置完成后,最好真实验证一次。

  1. 确认当前容器正在运行:docker ps
  2. 执行 sudo reboot 重启服务器(注意:云服务器通常可从控制台强制重启)。
  3. 等待系统启动,SSH 登录后查看容器状态:docker ps
  4. 如果容器出现在列表中且状态为 Up,说明配置成功。

快速验证不重启系统:也可以使用 docker restart 容器名 测试退出后是否自动拉起来,但服务器重启场景必须实际验证一次。

总结

配置 Docker 容器自启动并不复杂,核心就是 --restart 参数和 docker update 命令。
新手容易忽略 Docker 服务本身的自启状态,也容易混淆不同重启策略的区别。建议所有关键业务容器都设置为 unless-stopped,既能保证自动恢复,又不会在手动停止后意外复活。
如果你在生产环境中遇到容器启动顺序或日志疯转的问题,可以返回本文的避坑指南对照排查。

分享到:
上一篇
Docker数据卷持久化大模型文件:三步搞定持久存储
下一篇
Docker离线部署无网络住宅主机
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意