Docker自动重启原因
Docker自动重启通常是由以下几个原因导致的:
- 程序崩溃
- 系统内存不足
- 系统进程使用过多CPU和RAM导致的阻塞
- docker容器被杀死或重新启动,导致应用程序中断
- 网络中断
当这些问题出现时,Docker会自动重启运行中的服务来尝试解决问题。
docker update --restart=always mysql57
可以通过docker run的 --restart选项来设置自动重启。
docker run --restart=always [镜像名]
该命令设置重启容器时,将始终自动重启容器。
docker run --restart=unless-stopped [镜像名]
该命令设置重启容器时,只有当容器从未被停止或出现docker守护进程失败时,才会自动重启容器。
Docker 容器设置为自动重启,分为两种情况:新建容器时设置,和对已经存在的容器设置。
1、使用镜像创建新的容器运行
创建容器的时候设置容器为自动重启,命令行中加参数 –restart=always,命令如下:
docker run -d --restart=always --name 设置容器名 使用的镜像
1)以创建 InfluxDB(高性能的时序数据库) 容器为例
命令如下:
docker run -d -p 8086:8086 --restart=always --name influxdb influxdb:latest
2)以创建 PostgreSQL(关系型数据库) 容器为例
命令如下:
docker run -d -p 5432:5432 -e POSTGRES_PASSWORD=password --name postgres postgres:latest
2、已有的容器更新为自动重启
docker update --restart=always 容器ID(或者容器名)
1)已更新已有的 nginx 容器为例
命令如下:
docker update --restart=always nginx
2)已更新已有的 tomcat 容器为例
命令如下:
docker update --restart=always tomcat
关键参数说明
1. --restart=unless-stopped
这是 Docker 的重启策略配置,支持以下选项:
策略 | 行为 |
---|---|
no | 默认值,容器退出后不自动重启。 |
on-failure[:max-retries] | 容器非正常退出(退出码非0)时重启,可指定最大重试次数(如 on-failure:5 )。 |
always | 无论退出状态如何,始终自动重启(包括手动停止后重启 Docker 服务时)。 |
unless-stopped | 容器自动重启,除非用户显式执行 docker stop 停止它(推荐使用)。 |