如何清理Docker的覆盖目录?

107
我正在使用CoreOS和AWS的ECS来运行Docker。我有一个失败的镜像已经重新启动了多次,容器仍然存在-它们占满了我的驱动器分区。具体而言,/var/lib/docker/overlay/包含大量的文件/目录。
我知道docker-cleanup-volumes可以清理/volumes目录,但无法清理/overlay目录。 docker ps -a显示我的坏Docker容器尝试过250多次启动,但它们并没有在运行。
除了rm -rf /var/lib/docker/overlay/*,我应该如何清理这些内容?
12个回答

1
这里有一个可行的选项:
docker rm -f $(docker ps -a |awk 'NR>1&&/Exited/{print $1}')

0

这里有一个解决方案,可以清理Docker覆盖目录,来源于https://lebkowski.name/docker-volumes/

docker images --no-trunc | grep '<none>' | awk '{ print $3 }' | xargs -r docker rmi

docker ps --filter status=dead --filter status=exited -aq | xargs docker rm -v

对于 Docker < 1.9:

find '/var/lib/docker/volumes/' -mindepth 1 -maxdepth 1 -type d | grep -vFf <(docker ps -aq | xargs docker inspect | jq -r '.[]|.Mounts|.[]|.Name|select(.)')

或者对于 Docker >=1.9:

docker volume ls -qf dangling=true | xargs -r docker volume rm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接