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

如何重启Docker Stack中的特定容器?停止命令无效问题

如何单独重启Docker Stack中的特定容器

首先明确:可以单独重启Docker Stack(Swarm服务)中的特定容器,但不能直接用docker container stop/start操作——因为Swarm的服务副本管理机制会自动重建被停止/删除的容器,这就是你执行停止命令后,docker container ls里仍有该服务容器的原因(实际是Swarm新建的替换容器)。

为什么你的操作没效果

当你通过docker container stop <容器ID/名称>停止Swarm服务下的容器时,Swarm会检查服务的期望副本数(比如docker-compose.dev.yml中deploy.replicas定义的数量),发现当前运行副本数不足,会立刻启动一个新的容器来补全,所以你看到的docker container ls结果里的容器,其实是Swarm新建的替代容器,而非你停止的那个原容器。

正确的单个容器重启方法

要单独重启某个服务的特定副本,按以下步骤操作:

  1. 先找到对应服务的副本task ID:
    执行命令查看目标服务的所有副本:
    docker service ps mystack_nodejs
    
    在输出中找到你要重启的副本对应的ID(就是容器名称中.1.后面的那串字符,比如你的是4h03pnxae13ejqwdbsegstmib)。
  2. 触发该副本的重新调度(即重启):
    用以下命令强制更新该特定task,Swarm会停止原容器并启动新的副本:
    docker service update --force --task-id 4h03pnxae13ejqwdbsegstmib mystack_nodejs
    

补充:重启整个服务的所有副本

如果你需要重启该服务的全部副本,直接执行:

docker service update --force mystack_nodejs

这个命令会触发服务的滚动更新,逐个重启所有副本,不会影响其他服务的运行(比如你正在调试的Django容器)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 10:17:29