一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Docker 部署如何实现容器的开机自启与重启策略

时间:2026-08-27 20:02:49 编辑:袖梨 来源:一聚教程网

要让 Docker 容器在服务器重启后自动运行,必须同时启用 Docker 服务开机自启(sudo systemctl enable docker)并为容器设置重启策略(如 --restart=always);仅做其一无效。

要让 Docker 容器在服务器重启后自动运行,必须同时满足两个前提:Docker 服务本身开机自启,且容器设置了合适的重启策略。单独做其中一项是不够的。

确保 Docker 服务开机自启

Docker 容器依赖 Docker 守护进程(dockerd)运行。如果系统启动时 docker 服务没起来,所有容器都起不来。

  1. 启用开机自启:sudo systemctl enable docker.service
  2. 立即启动服务(非必须,但建议验证):sudo systemctl start docker
  3. 确认状态:systemctl is-enabled docker(返回 enabled 表示已设置)

为容器配置重启策略

重启策略决定容器退出后是否自动拉起,它不依赖宿主机是否“开机”,而是由 Docker 守护进程在检测到容器停止时触发。

  1. --restart=always:容器退出就重启,无论退出码(最常用,适合长期服务如 Nginx、MySQL)
  2. --restart=on-failure[:max-retries]:仅当退出码非 0 时重启,可限制最大重试次数(适合批处理类任务)
  3. --restart=unless-stopped:默认总是重启,但如果容器被手动 docker stop,则不会在 daemon 重启后自动恢复(兼顾可控性)
  4. --restart=no:不重启(默认值)

新建容器时直接设置

创建容器阶段就指定策略,最稳妥:

docker run -d --restart=always --name myapp -p 8080:80 nginx:alpine

注意:-d 是后台运行的必要条件,前台模式(如 -it)不适用重启策略。

为已有容器更新策略

无需删掉重建,用 docker update 即可生效(无需重启 Docker 服务):

docker update --restart=always myapp

批量设置所有容器(谨慎使用):

docker update --restart=always $(docker ps -aq)

查看某容器当前策略:

docker inspect -f '{{.HostConfig.RestartPolicy.Name}}' myapp

热门栏目