0

0

如何设置docker容器的自动重启? restart策略有哪些?

穿越時空

穿越時空

发布时间:2025-06-30 14:14:01

|

855人浏览过

|

来源于php中文网

原创

docker容器默认不会自动重启,但可通过设置restart策略实现自愈。常用的策略包括no(默认不重启)、on-failure(出错时重启并可设最大重试次数)、always(无论原因都重启)和unless-stopped(类似always但不受守护进程重启影响)。设置方法有两种:1.运行容器时使用--restart参数,如docker run -d --restart always my-image;2.在docker-compose.yml中配置restart属性。使用时需注意避免因依赖服务未就绪导致的重启死循环,并合理选择策略以适应不同场景。

如何设置docker容器的自动重启? restart策略有哪些?

Docker 容器默认不会在宿主机重启或自身异常退出后自动恢复。但你可以通过设置 restart 策略,让容器具备一定的“自愈”能力。这个功能其实很简单,但用对了能省不少心。


一、什么是 restart 策略?

restart 策略是 Docker 提供的一个选项,用于控制容器在退出时是否自动重启。它不是“永远运行”,而是根据设定的条件来决定要不要重新启动容器。

比如你跑一个 web 服务,如果程序崩溃退出了,默认是不会重启的。但如果你设置了 --restart=always,那不管因为什么原因退出,Docker 都会尝试把它拉起来。


二、常用的 restart 策略有哪些?

Docker 支持以下几种常见的 restart 策略:

  • no:默认值,不自动重启。
  • on-failure[:max-retries]:只有在容器退出状态码非0(出错)时才重启,可以加个最大重试次数。
  • always:只要容器停止,不管是不是正常退出,都会重启。
  • unless-stopped:和 always 类似,但它不会因为 Docker 守护进程重启而自动重启,除非手动停止过。

举个例子:

docker run -d --restart unless-stopped my-web-app

这条命令会让容器一直保持运行状态,即使服务器重启了,也会自动拉起。


三、怎么设置 restart 策略?

设置方式有两种:创建容器时指定,或者在 compose 文件里写好。

1. 使用命令行参数

在运行容器的时候加上 --restart 参数即可:

花生AI
花生AI

B站推出的AI视频创作工具

下载
docker run -d --restart always my-image

2. 在 docker-compose.yml 中配置

如果是用 docker-compose,可以在服务定义里加一行:

services:
  web:
    image: my-web
    restart: unless-stopped

这样管理多个容器的时候更方便,也更容易维护。


四、使用中要注意什么?

虽然 restart 很实用,但也不是随便乱设。

  • 如果你的容器依赖外部服务(比如数据库),频繁重启可能会导致死循环,卡在不断重启的状态。

  • on-failure 可以加重试次数限制,避免无限重启。例如:

    docker run -d --restart on-failure:5 my-image

    表示最多尝试重启 5 次,失败就放弃。

  • 如果你不希望容器随着系统重启自动拉起,那就别用 alwaysunless-stopped


基本上就这些。设置容器的自动重启不算复杂,但在生产环境使用时要结合实际情况考虑清楚策略的选择。

相关专题

更多
k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

249

2023.07.24

docker进入容器的方法有哪些
docker进入容器的方法有哪些

docker进入容器的方法:1. Docker exec;2. Docker attach;3. Docker run --interactive --tty;4. Docker ps -a;5. 使用 Docker Compose。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

494

2024.04.08

docker容器无法访问外部网络怎么办
docker容器无法访问外部网络怎么办

docker 容器无法访问外部网络的原因和解决方法:配置 nat 端口映射以将容器端口映射到主机端口。根据主机兼容性选择正确的网络驱动(如 host 或 overlay)。允许容器端口通过主机的防火墙。配置容器的正确 dns 服务器。选择正确的容器网络模式。排除主机网络问题,如防火墙或连接问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

399

2024.04.08

docker镜像有什么用
docker镜像有什么用

docker 镜像是预构建的软件组件,用途广泛,包括:应用程序部署:简化部署,提高移植性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

437

2024.04.08

数据库三范式
数据库三范式

数据库三范式是一种设计规范,用于规范化关系型数据库中的数据结构,它通过消除冗余数据、提高数据库性能和数据一致性,提供了一种有效的数据库设计方法。本专题提供数据库三范式相关的文章、下载和课程。

348

2023.06.29

如何删除数据库
如何删除数据库

删除数据库是指在MySQL中完全移除一个数据库及其所包含的所有数据和结构,作用包括:1、释放存储空间;2、确保数据的安全性;3、提高数据库的整体性能,加速查询和操作的执行速度。尽管删除数据库具有一些好处,但在执行任何删除操作之前,务必谨慎操作,并备份重要的数据。删除数据库将永久性地删除所有相关数据和结构,无法回滚。

2074

2023.08.14

vb怎么连接数据库
vb怎么连接数据库

在VB中,连接数据库通常使用ADO(ActiveX 数据对象)或 DAO(Data Access Objects)这两个技术来实现:1、引入ADO库;2、创建ADO连接对象;3、配置连接字符串;4、打开连接;5、执行SQL语句;6、处理查询结果;7、关闭连接即可。

347

2023.08.31

MySQL恢复数据库
MySQL恢复数据库

MySQL恢复数据库的方法有使用物理备份恢复、使用逻辑备份恢复、使用二进制日志恢复和使用数据库复制进行恢复等。本专题为大家提供MySQL数据库相关的文章、下载、课程内容,供大家免费下载体验。

255

2023.09.05

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

72

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
光速学会docker容器
光速学会docker容器

共33课时 | 1.9万人学习

Docker 17 中文开发手册
Docker 17 中文开发手册

共0课时 | 0人学习

极客学院Docker视频教程
极客学院Docker视频教程

共33课时 | 17.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号