参考于: docker占用磁盘空间清理
自从接触并使用docker就明显的发现一个问题,在磁盘空间中有一个文件
docker.raw
一直在持续的增大,在Mac路径/Users/xiexiang/Library/Containers
下也能看到一个名叫com.docker.docker
的文件非常的大,以前一直以为是因为下载了太多的镜像或者run了太多的容器造成的,在使用过程中也尝试清理过镜像和容器,但是docker.raw文件不会有一点点的变小。
以下方法可以解决Docker磁盘占用情况,可以根据自身情况测试,本人亲测可用。
当然看文章前首先声明:对于磁盘空间比较大的Mac用户不用在意空间大小或者Windows用户,可以忽略本篇文章。
Docker System命令
它是用于管理磁盘空间
|
<pre style="overflow: auto; font-family: consolas, Menlo, "PingFang SC", "Microsoft YaHei", monospace; font-size: 13px; margin: 0px; padding: 10px; color: rgb(134, 145, 148); background: rgb(239, 242, 243); line-height: 1.6; border: none; text-align: right;">1
</pre>
|
<pre style="overflow: auto; font-family: consolas, Menlo, "PingFang SC", "Microsoft YaHei", monospace; font-size: 13px; margin: 0px; padding: 10px; color: rgb(77, 77, 76); background: rgb(247, 247, 247); line-height: 1.6; border: none; width: 145.234px;">docker system df
</pre>
|
类似于linux上的df命令,用于查看Docker的磁盘使用情况:
可知,Docker镜像占用了808M磁盘,Docker容器占用了436KB磁盘,Docker数据卷占用了17KB磁盘。因为之前盲目清理过docker,但是并没有改变docker的占用空间。
|
<pre style="overflow: auto; font-family: consolas, Menlo, "PingFang SC", "Microsoft YaHei", monospace; font-size: 13px; margin: 0px; padding: 10px; color: rgb(134, 145, 148); background: rgb(239, 242, 243); line-height: 1.6; border: none; text-align: right;">1
</pre>
|
<pre style="overflow: auto; font-family: consolas, Menlo, "PingFang SC", "Microsoft YaHei", monospace; font-size: 13px; margin: 0px; padding: 10px; color: rgb(77, 77, 76); background: rgb(247, 247, 247); line-height: 1.6; border: none; width: 192.188px;">docker system prune -a
</pre>
|
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命令的,因此需要进行手动清理。这里给出几个常用的命令:
删除所有关闭的容器:
|
<pre style="overflow: auto; font-family: consolas, Menlo, "PingFang SC", "Microsoft YaHei", monospace; font-size: 13px; margin: 0px; padding: 10px; color: rgb(134, 145, 148); background: rgb(239, 242, 243); line-height: 1.6; border: none; text-align: right;">1
</pre>
|
<pre style="overflow: auto; font-family: consolas, Menlo, "PingFang SC", "Microsoft YaHei", monospace; font-size: 13px; margin: 0px; padding: 10px; color: rgb(77, 77, 76); background: rgb(247, 247, 247); line-height: 1.6; border: none; width: 489.609px;">docker ps -a | grep Exit | cut -d ' ' -f 1 | xargs docker rm
</pre>
|
删除所有dangling镜像(即无tag的镜像):
|
<pre style="overflow: auto; font-family: consolas, Menlo, "PingFang SC", "Microsoft YaHei", monospace; font-size: 13px; margin: 0px; padding: 10px; color: rgb(134, 145, 148); background: rgb(239, 242, 243); line-height: 1.6; border: none; text-align: right;">1
</pre>
|
<pre style="overflow: auto; font-family: consolas, Menlo, "PingFang SC", "Microsoft YaHei", monospace; font-size: 13px; margin: 0px; padding: 10px; color: rgb(77, 77, 76); background: rgb(247, 247, 247); line-height: 1.6; border: none; width: 513.094px;">docker rmi 3}")
</pre>
|
删除所有dangling数据卷(即无用的Volume):
|
<pre style="overflow: auto; font-family: consolas, Menlo, "PingFang SC", "Microsoft YaHei", monospace; font-size: 13px; margin: 0px; padding: 10px; color: rgb(134, 145, 148); background: rgb(239, 242, 243); line-height: 1.6; border: none; text-align: right;">1
</pre>
|
<pre style="overflow: auto; font-family: consolas, Menlo, "PingFang SC", "Microsoft YaHei", monospace; font-size: 13px; margin: 0px; padding: 10px; color: rgb(77, 77, 76); background: rgb(247, 247, 247); line-height: 1.6; border: none; width: 442.641px;">docker volume rm $(docker volume ls -qf dangling=true)</pre>
|