如何修改docker清理命令使其仅作用于当前目录的docker-compose项目
Docker跨项目资源影响问题修复方案
问题根因
原构建流程第一条命令会全局列出所有容器并全部停止,随后执行全局资源清理,会将其他项目已停止的容器关联的卷、镜像全部销毁,因此影响第一个项目的运行。
修改方案
将原第一条全局操作命令替换为仅作用于当前目录Docker Compose项目的命令,修改后的完整构建流程如下:
- 第一步(替换原有全局命令):
docker-compose -f docker-compose.local.yml down --volumes --rmi all --remove-orphans
该命令参数说明:--volumes:仅清理当前项目关联的所有卷资源--rmi all:仅清理当前项目用到的所有镜像--remove-orphans:清理当前Compose配置中未定义的冗余历史容器
- 第二步:
docker stack rm up - 第三步:
docker-compose -f docker-compose.local.yml build - 第四步:
docker stack deploy up --compose-file docker-compose.local.yml
可选适配方案(针对Swarm Stack场景)
如果需要基于Stack标签过滤操作,也可以使用以下命令作为第一步,只会操作命名为up的Stack对应的资源:
docker container stop $(docker container ls -a --filter "label=com.docker.stack.namespace=up" -q) && docker system prune -a -f --volumes --filter "label=com.docker.stack.namespace=up"
内容的提问来源于stack exchange,提问作者michaelsking1993
相关产品推荐
相关产品推荐

