自从接触并使用docker就明显的发现一个问题,在磁盘空间中有一个文件
docker.raw
一直在持续的增大,在Mac路径/Users/xiexiang/Library/Containers
下也能看到一个名叫com.docker.docker
的文件非常的大,以前一直以为是因为下载了太多的镜像或者run了太多的容器造成的,在使用过程中也尝试清理过镜像和容器,但是docker.raw文件不会有一点点的变小。
以下方法可以解决Docker磁盘占用情况,可以根据自身情况测试,本人亲测可用。
当然看文章前首先声明:对于磁盘空间比较大的Mac用户不用在意空间大小或者Windows用户,可以忽略本篇文章。
Docker System命令
它是用于管理磁盘空间
1 | docker system df |
类似于linux上的df命令,用于查看Docker的磁盘使用情况:
可知,Docker镜像占用了808M磁盘,Docker容器占用了436KB磁盘,Docker数据卷占用了17KB磁盘。因为之前盲目清理过docker,但是并没有改变docker的占用空间。
1 | docker system prune -a |
docker system prune命令可以用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)。docker system prune -a命令清理得更加彻底,可以将没有容器使用Docker镜像都删掉。注意,这两个命令会把你暂时关闭的容器,以及暂时没有用到的Docker镜像都删掉了……所以使用之前一定要想清楚吶。
再次执行docker system df
你会发现上图中的数据会变小很多。
执行后,如果是Mac用户,你可以尝试看下你的总的磁盘空间是否有下降,同时在 /Library/Containers下查看com.docker.docker的大小,正常情况下会小很多,这样会节省出很多的磁盘空间出来。
手动清理Docker镜像/容器/数据卷
对于旧版的Docker(版本1.13之前),是没有Docker System命令的,因此需要进行手动清理。这里给出几个常用的命令:
删除所有关闭的容器:
1 | docker ps -a | grep Exit | cut -d ' ' -f 1 | xargs docker rm |
删除所有dangling镜像(即无tag的镜像):
1 | docker rmi $(docker images | grep "^<none>" | awk "{print $3}") |
删除所有dangling数据卷(即无用的Volume):
1 | docker volume rm $(docker volume ls -qf dangling=true) |