macOS上Docker Postgres容器删除后自动重生问题求助
问题分析
嘿,这个情况我之前也踩过坑!从你容器的命名some-postgres.1.a0udiazm08y67gcxhnxbhinh8就能看出门道——这种[服务名].[副本序号].[随机字符串]的格式,是Docker Swarm服务的典型标识。Swarm服务有个核心特性:会自动维护你设定的副本数量,哪怕你手动删了容器,它也会立刻新建一个来补位,这就是为啥你删完容器它马上又冒出来的原因。
解决步骤
第一步:处理Docker Swarm服务
- 先确认当前运行的Swarm服务列表,找一找有没有
some-postgres:
docker service ls
- 如果找到了这个服务,直接删除它——这才是切断自动重建的根源:
docker service rm some-postgres
执行完这个命令后,再去删除容器,就不会再自动重建了。
如果不是Swarm?检查Docker Compose
要是上面的命令没找到对应服务,那大概率是Docker Compose在后台管理这个容器:
- 回忆下你有没有在某个目录下创建过
docker-compose.yml文件(尤其是你构建镜像的目录),找到后进入该目录执行:
docker-compose down
这个命令会彻底停止并删除Compose管理的容器、网络,终止服务的自动重建逻辑。
验证操作
删除服务后,你可以执行以下命令彻底清理残留容器和镜像(如果需要的话):
docker rm -f $(docker ps -a -q) docker rmi -f $(docker images -q)
这次再看docker ps -a,应该就不会有容器自动冒出来了。
内容的提问来源于stack exchange,提问作者补充:
hostname:~ username$ docker kill $(docker ps -q) && docker rm -f $(docker ps -a -q) && docker rmi -f $(docker images -q) 7d180c7a4532 7d180c7a4532 Untagged: postgres@sha256:1c2cc88d0573332ff1584f72f0cf066b1db764166786d85f5541b3fc1e362aee Deleted: sha256:e84edf994e8bc77bf6c60970a2bd32c905ed8782296e67aa46c949a4b47cb678 hostname:~ username$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 70f3de1d4b8a e84edf994e8b "docker-entrypoint.s鈥�" 45 seconds ago Up 40 seconds 5432/tcp some-postgres.1.alq5qjn7adyjvbjeo023kx2fq
Apparently
相关产品推荐
相关产品推荐

