VPS重启后,Docker到底要不要手动重启?答案在这里

林婉秋

很多用VPS部署Docker应用的朋友都会遇到一个困惑:VPS重启后,之前跑的Docker容器怎么突然没了?到底要不要手动重启Docker?今天就把这个问题讲透,让你再也不用踩坑。

先搞懂两个核心概念

Docker的运行分为两层:

  • Docker服务(daemon):后台运行的管理程序,负责启动、停止、管理所有容器;
  • Docker容器:基于镜像运行的应用实例,依赖Docker服务才能存活。

VPS重启后,这两层的状态决定了你的应用是否能自动恢复。

VPS重启后,Docker到底要不要手动重启?答案在这里

问题1:Docker服务会自动启动吗?

默认情况下,Linux系统(比如Ubuntu、CentOS)安装Docker后,会自动将Docker服务注册为开机自启(通过systemd管理)。但也有例外:

  • 如果是手动编译安装的Docker,可能没设置自启;
  • 之前手动关闭过自启(比如执行过systemctl disable docker)。

验证方法:VPS重启后,执行systemctl status docker,如果显示“active (running)”,说明服务已自动启动;如果是“inactive”,则需要手动启动(systemctl start docker),或者设置开机自启:

sudo systemctl enable docker  # 永久开启开机自启

问题2:容器会自动重启吗?

即使Docker服务自动启动了,容器默认也不会自动重启!因为容器的重启策略默认是no(即:停止后不自动重启)。

这就是很多人VPS重启后容器消失的原因——服务起来了,但容器没起来。

解决办法:给容器设置自动重启策略。有三种常用策略:

  • always:只要容器停止(不管正常还是异常),就自动重启(除非手动stop);
  • on-failure:只有容器异常退出(退出码非0)时才重启;
  • unless-stopped:除非手动stop,否则总是重启(即使容器正常退出)。

操作方式

  1. 新建容器时设置
    docker run -d --restart always nginx  # 以nginx为例,设置always重启
  2. 已有容器修改
    docker update --restart unless-stopped 容器ID/名称  

总结:不用手动重启,但要提前配置

VPS重启后,不需要手动重启Docker,但必须做好两件事:

  1. 确保Docker服务开机自启;
  2. 给所有需要持久运行的容器设置自动重启策略。

这样VPS重启后,Docker服务会自动启动,容器也会跟着恢复运行,完全不用手动干预。

下次遇到容器消失的问题,先检查这两个设置,99%的情况都能解决!

你学会了吗?欢迎在评论区分享你的Docker使用经验~
(字数:约600字)

文章版权声明:除非注明,否则均为婉秋博客原创文章,转载或复制请以超链接形式并注明出处。

目录[+]