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

2022年 10月 17日 发表评论
腾讯云正在大促:点击直达 阿里云超级红包:点击领取
免费/便宜/高性价比服务器汇总入口(已更新):点击这里了解

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

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

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

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

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

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

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

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

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

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

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

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

容器的磁盘占用

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

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

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

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

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

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

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

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

一张图片,126MB

容器

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

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

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

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

$ dockersec-tiwww

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

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

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

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

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

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

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

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

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

$dockercontainerprune

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

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

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

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

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

镜像的磁盘占用

有一些镜像是隐形的:

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

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

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

$dockerimagels-fdangling=true

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

删除这类镜像:

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

或者:

$dockerimageprune

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

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

$dockerimagerm$(dockerimagels-q)

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

数据卷的磁盘占用

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

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

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

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

删除不再使用的数据卷:

$dockervolumerm$(dockervolumels-q)

或者:

$dockervolumeprune

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

Build Cache 的磁盘占用

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

删除 build cache 可以使用命令:

$dockerbuilderprune

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

一键清理

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

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

$dockersystemprune

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

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

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

腾讯云正在大促:点击 https://2bcd.com/go/tx/进入最新活动页】领取无门槛代金券,附云服务器价格表,2核2G4M轻量应用服务器99元1年,新老用户都可以买,可以享受1次续费99元一年、135元15个月、三年560元,MySQL云数据库59元1年起,2核2G3M配置82元1年,2核4G5M配置188元一年、3年900元,4核8G12M轻量服务器880元15个月,8核16G配置1890元15个月,更多16核32G28M带宽和云服务器CVM标准型S5、GPU服务器、CVM标准型SA2租用优惠价格如下,可以 点此进入最新活动页 查看当前最新的优惠券和活动信息。还可以领下10元无门槛代金券:点此直达 阿里云限量超级红包:点击领取】5亿上云补贴和2088元满减代金券,阿里云服务器租用费用最新价格表【点击了解】,最便宜轻量应用服务器2核2G3M带宽82元1年,ECS云服务器2核2G3M带宽99元一年,ECS u1实例2核4G5M带宽优惠价格199元一年,香港30M带宽轻量服务器24元1个月、288元一年,4核8G服务器706元一年,ECS云服务器4核16G10M带宽30元1个月、90元3个月,云服务器8核32G10M带宽109元1个月、327元3个月。阿里云产品最高降价55%,点击 https://2bcd.com/go/aliyun/ 进入最新活动页了解。 腾讯云续费贵,一次性买3年/5年,免得续费贵。3年轻量 2核2G 4M 560元;3年轻量 2核4G 5M 3年900元,活动入口:点击前往(下拉到“爆品专区”即可看到)。 老用户享新人优惠的方法:用Qq登录、1人可注册3个新账号/用家人朋友的身份注册新号(点击注册新账号)。
小咸鱼

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: