如何释放docker使用的浪费空间?

时间:2017-03-20 14:32:27

标签: docker build diskspace

我在服务器上设置了docker。我使用Jenkins进行CI。那些工具真的很酷。但是,不幸的是,我仍然无法弄清楚如何将浪费的空间带回来。

我在网上尝试了不同的东西,通过使用它们,我只能释放一部分浪费的空间。我不需要任何历史等等。

我尝试了不同的东西,比如粗鲁的docker rm $(docker ps -aq)docker rmi $(docker images -q),而有些容器正在运行,导致它们无法删除。

我也试过这个脚本和类似的。

#!/bin/bash

# remove exited containers:
docker ps --filter status=dead --filter status=exited -aq | xargs -r docker rm -v

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

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

我希望在首次构建所有图像后,我通过应用上面的清理命令来修复大小的东西。换句话说,我希望应用清理的后续构建不会使浪费的空间增长。

但无论如何,每个docker build的执行都占据了我无法释放的新空间。

目录/ var / lib / docker / overlay长大了,最终不考虑我的清理工作。

我哪里错了?

2 个答案:

答案 0 :(得分:2)

在最新版本的Docker中,您现在可以使用docker system prune命令(带--all选项进行完全清理)。

https://docs.docker.com/engine/reference/commandline/system_prune/

答案 1 :(得分:2)

要删除卷,请使用:

docker volume prune

要删除网络,请使用:

docker network prune

要删除所有已停止的容器,请使用:

docker container prune

要删除未使用的图像,请使用:

docker image prune