VPS重启后,Docker需要手动重启吗?

林婉秋

当你的VPS(虚拟专用服务器)重启后,Docker服务和容器是否自动运行,取决于你是否配置了「自启动策略」——这不是一个固定答案,而是由系统设置决定的。

1. Docker服务:默认可能不会自动启动

Docker本质是一个系统服务(在Linux上叫docker daemon)。和MySQL、Nginx等服务一样,它不会“天生”随系统开机启动。如果你的VPS重启前没有配置Docker服务自启动,那么重启后Docker服务会处于停止状态,此时所有依赖Docker的容器也会熄火。

验证方法:VPS重启后,执行docker ps,如果提示“Cannot connect to the Docker daemon...”,说明Docker服务没启动。

VPS重启后,Docker需要手动重启吗?

2. 容器:即使Docker服务启动,容器也未必自动跑

假设你已经让Docker服务开机自启了,但容器是否跟着启动?还要看容器的「重启策略」:

  • 如果你运行容器时没加任何重启参数(比如docker run -d nginx),那么Docker服务启动后,这个容器还是会处于「停止」状态;
  • 只有当你给容器设置了重启策略(比如--restart always),它才会在Docker服务启动后自动恢复运行。

3. 如何让Docker和容器「开机自启」?

(1)配置Docker服务自启动

在Linux系统(如Ubuntu、CentOS)中,用systemctl命令开启自启:

# 设置Docker服务开机自启
sudo systemctl enable docker
# 立即启动Docker服务(如果当前没启动)
sudo systemctl start docker

(2)配置容器重启策略

运行容器时,添加--restart参数指定策略:

  • always:无论容器因何原因停止(包括系统重启),都自动重启;
  • unless-stopped:除非手动停止容器,否则一直自动重启(推荐);
  • on-failure:仅当容器因错误退出(退出码非0)时重启。

示例:运行一个Nginx容器并配置自启:

docker run -d --name my-nginx --restart unless-stopped nginx

如果容器已经创建,也可以用docker update修改策略:

docker update --restart unless-stopped 容器名称/ID

4. 为什么要配置自启?

如果不配置,VPS重启后:

  • Docker服务停了→所有容器都无法运行;
  • 即使Docker服务启动,未配置重启策略的容器也会停止→你的网站、应用会宕机。

配置自启后,VPS重启无需手动干预,Docker和容器会自动恢复,保证服务连续性。

总结

VPS重启后,Docker是否需要手动重启?答案是:如果提前配置了服务自启和容器重启策略,就不需要;否则需要手动启动Docker服务和容器

推荐做法

  • 务必开启Docker服务自启;
  • 给所有重要容器设置unless-stoppedalways重启策略。

这样,即使VPS意外重启,你的Docker应用也能“自动复活”,避免服务中断~

(PS:验证配置是否生效的方法:重启VPS后,执行docker ps,如果能看到容器处于「Up」状态,说明配置成功!)

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

目录[+]