You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker Swarm默认restart 'any'策略含义咨询:官方文档未明确

Docker Swarm any 重启策略的实际行为

我来给你拆解一下这个官方文档没明确说明的重启策略——其实从实际运维经验和对Swarm源码的梳理来看,它的运行逻辑非常直白:

  • 只要容器处于停止状态,无论退出原因是什么,Swarm都会触发重启
    不管容器是正常退出(比如退出码为0)、进程异常崩溃(非0退出码),还是因为所在节点故障被调度到其他节点,只要容器不再处于运行状态,Swarm调度器就会立刻尝试重启它。

  • 和单容器always策略的区别?
    很多人会把Swarm的any和单容器docker run的always搞混,两者行为上确实很贴近,但any是专门适配Swarm集群调度逻辑的:如果容器所在节点宕机,Swarm会先把容器调度到其他可用节点,再执行重启,而不是只在原死节点上做无效尝试。

  • 典型适用场景
    适合那些必须持续在线的核心服务,比如数据库、消息队列、反向代理——不管是程序崩溃、手动误停还是节点故障,都要确保服务能快速恢复可用。

举个实际使用的命令示例:

docker service create --restart-condition any --name core-redis redis:latest

这个命令创建的Redis服务,不管是进程意外崩溃、你手动停掉容器,还是运行它的节点挂了,Swarm都会自动重启(或调度到其他节点后重启)这个容器。

对比一下Swarm的另外两个重启策略:on-failure只有当容器非0退出码时才重启,none则完全不触发自动重启,any是最“激进”的保活策略。

内容的提问来源于stack exchange,提问作者user1387219

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 00:37:34