Docker Compose文件更新异常及Windows10 Docker Toolbox部署问题
解决Swarm部署后已删除服务仍运行的问题
嘿,这个问题我之前也碰到过!Swarm的docker stack deploy默认是增量更新的——它只会根据你当前的docker-compose.yml去更新或添加服务,但不会主动清理那些你从配置文件里删掉的旧服务。下面给你几个靠谱的解决办法:
方法一:手动移除多余服务
- 先确认目标服务还在运行:
你应该能看到docker stack services getstartedlabgetstartedlab_visualizer还在列表里(Swarm里的服务名是「stack名_服务名」的格式)。 - 直接删除这个服务:
docker service rm getstartedlab_visualizer - 再检查一遍,确认服务已经被移除:
docker stack services getstartedlab
方法二:用--prune参数自动同步配置
如果你不想每次删服务都手动操作,可以在部署的时候加上--prune参数,让Swarm自动清理掉docker-compose.yml里没有定义的服务:
docker stack deploy --with-registry-auth -c docker-compose.yml --prune getstartedlab
这个命令会让Swarm完全对齐你当前的配置文件,不仅会更新现有服务,还会移除所有不在新配置里的旧服务。
额外注意事项
因为你用的是Docker Toolbox,要确保你的终端已经加载了Docker Machine的环境变量——比如先运行docker-machine env default,然后根据提示执行对应的命令(比如Windows下的& "C:\Program Files\Docker Toolbox\docker-machine.exe" env default | Invoke-Expression),不然你的命令可能没作用到Swarm管理器上哦!
内容的提问来源于stack exchange,提问作者rafik
相关产品推荐
相关产品推荐

