IDC资讯

质量为本、客户为根、勇于拼搏、务实创新

< 返回IDC资讯列表

怎么清理Docker占用的磁盘空间的方法

发布时间:2022-05-30

桂哥网络与你分享了如何清理Docker占用的磁盘空间。希望你看完这篇文章有所收获。大家一起讨论一下。

Docker占用了大量空间。每当我们运行容器、提取映像、部署应用程序和构建自己的映像时,我们的磁盘空间都会被占用很多。

如果你也为这个问题困扰,我们来看看Docker是如何使用磁盘空间的,如何回收。

可以通过以下命令查看docker占用的空间:

$ dockersystemdf

类型列出了码头工人使用的四种类型的磁盘:

图片:所有图片占用的空间,包括拉出来的图片和本地建的。

容器:运行容器占用的空间,表示每个容器读写层的空间。

本地卷:容器装载本地数据卷的空间。

构建缓存:在映像构建过程中生成的缓存空间(仅在使用构建工具包时可用,在Docker 18.09之后可用)。

最后一个可恢复的大小是可恢复的大小。

我们分别来看一下这几种类型。

容器的磁盘占用

每次创建容器时,都会创建一些文件和目录,例如:

/var/lib/docker/containers/ID目录。如果容器使用默认的日志模式,它的所有日志将以JSON的形式保存在这个目录中。

/var/lib/docker/overlay2目录包含容器的读写层。如果容器使用自己的文件系统保存数据,它将被写入该目录。

现在让我们从一个完全干净的系统开始,假设docker刚刚安装了:

首先,我们启动一个NGINX容器:

现在,运行df命令后,您将看到:

一张图片,126MB

容器

此时没有可回收空间,因为容器正在运行,镜像正在使用。

现在,我们在容器中创建一个100兆字节的空文件:

$ dockersec-tiwww \

ddif=/dev/zero of=test . img bs=1024 count=0 seek=$[1024 * 100]再次检查空格:

你可以看到容器占用的空间增加了。这个文件存储在这台机器的什么地方?

如上所述,它存储在容器的读写层。

当容器停止时,容器所占据的空间变成可回收的:

怎么回收?删除容器会删除与其关联的读写层所占用的空间。

您也可以一键删除所有停止的容器:

$dockercontainerprune

" alt="怎么清理Docker占用的磁盘空间的方法">

删除容器后,镜像也可以回收了:

上面的 docker container prune 命令是删除停止的容器,如果想删除所有容器(包括停止的、正在运行的),可以使用下面这2个命令:

$dockerrm-f$(dockerps-aq)
$dockercontainerrm-f$(dockercontainerls-aq)

镜像的磁盘占用

有一些镜像是隐形的:

  • 子镜像,就是被其他镜像引用的中间镜像,不能被删除。

  • 悬挂状态的镜像,就是不会再被使用的镜像,可以被删除。

下面的命令列出所有悬挂状态的镜像:

$dockerimagels-fdangling=true

删除这类镜像:

$dockerimagerm$(dockerimagels-fdangling=true-q)

或者:

$dockerimageprune

如果想删除所有镜像,可以使用下面的命令:

$dockerimagerm$(dockerimagels-q)

注意,正在被容器使用的镜像是不能被删除的。

数据卷的磁盘占用

数据卷是容器自身文件体统之外的数据存储。

例如容器中的应用有上传图片的功能,上传之后肯定不能保存在容器内部,因为容器内部的数据会随着容器的死掉而被删除,所以,这些图片要保存在容器之外,也就是数据卷。

比如我们运行了一个 MongoDB 容器做测试,导入了很多测试数据,这些数据就不是在容器内部的,是在数据卷中,因为 MongoDB 的 Dockerfile 中使用了数据卷。

测试完成后,删除了这个 MongoDB 容器,但测试数据还在,没被删除。

删除不再使用的数据卷:

$dockervolumerm$(dockervolumels-q)

或者:

$dockervolumeprune

Build Cache 的磁盘占用

Docker 18.09 引入了 BuildKit,提升了构建过程的性能、安全、存储管理等能力。

删除 build cache 可以使用命令:

$dockerbuilderprune

一键清理

通过上面的说明,我们知道了像容器、镜像、数据卷都提供了 prune这个子命令,帮助我们回收空间。

其实,docker 系统层面也有 prune 这个子命令,可以一键清理没用的空间:

$dockersystemprune

定期执行这个命令是个好习惯。

看完了这篇文章,相信你对“怎么清理Docker占用的磁盘空间的方法”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!


TikTok千粉号购买平台:https://tiktokusername.com/