当前位置: 首页 > news >正文

docker创建容器添加启动--restart选项

一、通过 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 并限制重试次数,避免无限重启。

通过合理选择策略,可确保容器在异常退出或宿主机重启后自动恢复运行。

相关文章:

  • 复刻系列-星穹铁道 3.2 版本先行展示页
  • 前端在线工具 CodePen 和 JSFiddle
  • 智能工厂调度系统设计方案研究报告
  • 《AI大模型应知应会100篇》第15篇:大模型训练资源需求:算力、数据与成本分析
  • ConcurrentHashMap 源码分析
  • C++中 string 类及迭代器相关知识详解
  • 详解MYSQL表空间
  • 如何为您的设计应用选择高速连接器
  • Hello Java!
  • ngx_conf_read_token - events
  • CMake set_source_files_properties用法详解
  • 机械革命 无界15X MT7922 debian12 蓝牙无法使用的研究
  • 【NLP】 18. Tokenlisation 分词 BPE, WordPiece, Unigram/SentencePiece
  • 【navicat16版本安装】
  • 基于FPGA的智能垃圾桶设计-超声波测距模块-人体感应模块-舵机模块 仿真通过
  • 服务器远程端口详解
  • MySQL与Oracle深度对比
  • 如何在英文学术写作中正确使用标点符号?
  • JavaScript 基础特性
  • XAMPP 下载、部署及使用入门
  • A股三大股指低收:汽车股领涨,大金融走弱,两市成交近1.1万亿元
  • 国防部:中方愿与俄方不断增强两军关系良好发展势头
  • 马上评|这种“维权”已经不算薅羊毛,涉嫌犯罪了
  • 国务院关税税则委:调整对原产于美国的进口商品加征关税措施
  • 农林生物安全全国重点实验室启动建设,聚焦重大有害生物防控等
  • 中美经贸高层会谈11日在日内瓦将继续进行