Docker环境下Adminer容器自动重建启动无法停止的解决问询
彻底停止Docker Swarm中自动重建的Adminer容器解决方案
我之前在Docker Toolbox环境里碰到过完全一样的问题:用docker-compose -f stack.yml up启动了基于MySQL和Adminer镜像的容器,stack.yml里把restart参数设成了always,结果删除Adminer容器后,它立刻就会自动重建出一个新容器(名字格式像mysql_adminer.1.4cxxxxxxxxxxxxx5iyt),怎么都停不下来。
我当时试了好几种方法都没用:
- 执行
docker update --restart=no <containerId>修改容器重启策略 - 把
stack.yml里的restart改成"no" - 执行
docker-compose -f stack.yml down - 重启VirtualBox里的Docker镜像
- 删除本地相关的配置文件
后来才搞明白问题所在:当你用stack.yml配合docker-compose up(或者docker stack deploy)启动容器时,其实是在Docker Swarm模式下创建了服务(Service),而不是普通的独立容器。Swarm服务的核心特性就是维持你指定的副本数量,哪怕你手动删掉容器,服务也会自动重建新容器来满足副本要求——这就是之前那些方法都失效的原因,你操作的是容器,但控制重建的是Swarm服务。
正确的解决方案
要彻底停止自动重建,你需要直接删除对应的Swarm服务:
- 先列出当前运行的Swarm服务,找到目标服务:
你会看到类似docker service lsmysql_adminer和mysql_db的服务条目。 - 删除这两个服务:
执行完这两个命令后,Swarm就不会再自动重建这些容器了,问题彻底解决。docker service rm mysql_adminer docker service rm mysql_db
内容的提问来源于stack exchange,提问作者hkguile
相关产品推荐
相关产品推荐

