Docker 容器的--restart参数

本文详细介绍了Docker中容器的三种重启策略:no、on-failure及always,并解释了每种策略的具体含义及其应用场景。此外,还提供了如何通过命令行设置这些重启策略的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文地址:https://blog.youkuaiyun.com/MaxWoods/article/details/88018357

--restart参数有3个可选值 :

no,on-failure,always

1.no为默认值,表示容器退出时,docker不自动重启容器

2.on-failure表示,若容器的退出状态非0,则docker自动重启容器,还可以指定重启次数,若超过指定次数未能启动容器则放弃:

    $ docker update --restart=on-failure:3 [容器名]

3.always表示,只要容器退出,则docker将自动重启容器

如果容器启动时没有设置--restart参数,则通过下面命令进行更新:

    $ docker update --restart=always [容器名]

 

<think>嗯,用户问的是Docker中的`docker run --restart`选项,我需要详细解释这个参数的作用和不同的重启策略。首先,我应该回忆一下Docker的文档,确认各个重启策略的名称和具体行为。比如,no、on-failure、unless-stopped还有always这些选项的区别。 用户可能是在部署容器时需要确保服务的高可用性,所以了解如何配置自动重启很重要。我需要分点解释每个策略的使用场景,比如on-failure在容器异常退出时重启,而always不管退出状态如何都重启。要注意unless-stopped和always的区别,特别是当Docker守护进程重启时的行为差异。 还要举例子说明如何使用这些选项,比如具体的命令格式,这样用户可以直接复制使用。可能需要提醒用户,在Docker Compose中配置重启策略的方式,因为有时候用户可能不仅仅是使用命令行。 另外,需要注意常见问题,比如无限重启可能导致的问题,或者结合其他参数--restart-attempts的使用,不过这个可能只在Swarm模式下有效,需要明确说明,避免混淆。 最后,确保语言口语化,结构清晰,让用户能够一步步理解,并且提供实际应用的例子,帮助他们更好地掌握如何根据需求选择合适的重启策略。同时,检查是否有语法错误,特别是LaTeX格式是否正确,但用户的问题中没有涉及数学公式,所以可能不需要使用。不过按照系统指令,如果有行内技术术语或代码,可能需要适当使用反引号或代码块,但这里主要是Docker命令,用反引号标注即可。</think>Docker的`docker run --restart`参数用于配置容器的自动重启策略。这个功能在容器意外退出时非常有用,可以帮助保持服务的持续可用性。以下是详细说明: --- ### **参数格式** ```bash docker run --restart <策略类型> [其他参数] <镜像名> ``` --- ### **重启策略类型** 1. **`no`(默认)** - 不自动重启容器 - 示例:`docker run --restart no nginx` 2. **`on-failure[:max-retries]`** -容器以**非0状态码退出**时自动重启 - 可选的`:max-retries`指定最大重试次数(需Docker 1.11+) - 示例: ```bash docker run --restart on-failure:5 my-app ``` 3. **`always`** - **无条件自动重启**(无论退出状态码如何) - 注意:如果容器被手动停止(`docker stop`),则不会自动重启 - 示例: ```bash docker run --restart always redis ``` 4. **`unless-stopped`** - 类似`always`,但**排除手动停止的情况** - 如果容器是手动停止的,即使Docker守护进程重启,容器也不会自动启动 - 示例: ```bash docker run --restart unless-stopped mysql ``` --- ### **典型应用场景** 1. **关键服务保活** 使用`always`或`unless-stopped`确保数据库、Web服务器等高优先级服务持续运行。 2. **调试任务** 对可能崩溃的调试程序使用`on-failure`策略,避免无限重启干扰日志分析。 3. **定时任务容器** 对执行一次性任务的容器保持默认`no`策略。 --- ### **注意事项** 1. **与Docker守护进程的关系** 自动重启策略依赖Docker守护进程(`dockerd`)的运行。若守护进程停止,所有重启策略将暂停,直到守护进程恢复。 2. **手动停止优先级** 使用`docker stop`命令停止的容器会忽略`always`策略,但`unless-stopped`会记住最后一次停止状态。 3. **无限重启风险** 如果容器因配置错误立即退出,可能触发重启循环。可通过`docker inspect`查看退出原因。 --- ### **补充:在Docker Compose中配置** 在`docker-compose.yml`中通过`restart`字段指定策略: ```yaml services: web: image: nginx restart: unless-stopped ``` --- 通过合理选择重启策略,可以显著提升容器化服务的健壮性。建议根据实际需求选择最匹配的策略类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

地表最强菜鸡

你的鼓励将是我创作最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值