一、通过 Docker 命令直接修改已启动的容器(推荐-已验证)
操作步骤:
1.执行更新命令:
docker update --restart=always <容器名或ID>
此命令会将容器的重启策略调整为 always(无论容器以何种状态退出,均自动重启)。
2.验证是否生效:
docker inspect <容器名或ID>
在前部分RestartPolicy位置查看到:
若输出显示 “Name”: “always”,则说明修改成功。
适用场景:
容器处于运行或停止状态均可操作。
无需停止 Docker 服务,操作简单且风险较低。
二、通过修改配置文件(备选方案)
若命令修改无效(如旧版本 Docker 兼容性问题),可手动编辑容器配置文件:
1停止容器及 Docker 服务
docker stop <容器名或ID> # 停止容器
systemctl stop docker # 停止 Docker 服务
2.修改配置文件:
定位到容器配置目录:/var/lib/docker/containers/<容器ID>/
编辑 hostconfig.json ,找到 RestartPolicy 字段,修改为:
"RestartPolicy": {"Name": "always", "MaximumRetryCount": 0}
部分版本需同步修改 config.v2.json (添加 “RestartPolicy”: {“Name”: “always”})。
3.重启 Docker 服务及容器:
systemctl start docker # 启动 Docker 服务
docker start <容器名或ID> # 启动容器
注意事项:
需确保 Docker 服务完全停止后再修改文件,否则可能导致配置被覆盖。
适用于无法通过命令修改的特殊场景,如 Docker 版本兼容性问题。
三、其他相关建议
重启策略类型:
no:不自动重启(默认)。
always:始终重启。
unless-stopped:Docker 服务重启后自动启动容器,除非容器被手动停止。
端口映射等参数修改:
若需同时调整端口映射或存储路径,需通过 docker commit 生成新镜像并重新创建容器。
总结
推荐优先使用 docker update 命令,简单高效且兼容性强。
修改配置文件适用于调试或特殊环境,但需谨慎操作以避免配置冲突。
可通过 docker inspect 验证参数是否生效。
★★★★★★★★★★★★★★★★★★如何在启动时就配置好?★★★★★★★★★★★★★★★★★★★
一、基本配置方法
在 docker run 命令中直接添加 --restart 参数即可:
docker run -d --restart=策略类型 [其他参数] 镜像名
支持的策略类型:
no
默认策略,容器退出后不会自动重启。
on-failure
仅在容器非正常退出(退出状态码非0)时重启。
可指定最大重试次数,例如 --restart=on-failure:3(最多重启3次)。
always
无论容器以何种状态退出(包括手动停止),Docker服务重启后都会自动启动该容器。
unless-stopped
类似 always,但排除 Docker 守护进程启动前已被手动停止的容器。
二、配置示例
1. 始终自动重启
docker run -d --restart=always --name my_nginx nginx
2. 仅在异常退出时重启(最多5次)
docker run -d --restart=on-failure:5 --name my_app your_image
3. 排除手动停止的场景
docker run -d --restart=unless-stopped --name my_db mysql
三、验证配置是否生效
通过以下命令检查重启策略:
docker inspect --format='{{.HostConfig.RestartPolicy.Name}}' 容器名
输出应为 always、on-failure 或 unless-stopped。
四、注意事项
策略优先级
手动执行 docker stop 后,always 策略的容器仍会在 Docker 服务重启后自动启动,而 unless-stopped 不会。
资源限制
频繁重启可能占用资源,建议为 on-failure 设置最大重试次数(如 :3)。
版本兼容性
unless-stopped 需要 Docker 1.9 或更高版本。
与 --rm 参数冲突
--restart 不能与 --rm(容器退出后自动删除)同时使用。
五、生产环境推荐方案
长期运行的服务(如 Web 服务器):优先使用 always 或 unless-stopped。
一次性任务或批处理作业:使用 on-failure 并限制重试次数,避免无限重启。
通过合理选择策略,可确保容器在异常退出或宿主机重启后自动恢复运行。