专栏首页TencentcloudDocker,请做好自己的清理工作

Docker,请做好自己的清理工作

最近,我们开始对一些应用程序进行docker化,不得不说,我简直爱上了Docker!这是一个非常棒的工程,在AWS EC2的软件运用的基础上,它让我们的生活变得更加轻松。但是,我们在使用Docker时碰到的一个问题是它的疯狂的占用磁盘的情况。我们在Amazon Linux上运行Docker,并且我们有一个构建服务器来构建Docker镜像作为构建管道的一部分。一旦建立,图像会通过一个Ansible的手册推送到我们的服务器。从这点来看,它确实值得更多的关注。

其实我们注意到,随着时间的推移,docker似乎吞噬了主机的磁盘空间。快速的df -h显示/ var / lib / docker正在增长到几乎覆盖整个磁盘的地步。所以我们四处寻找解决方案,并提出来以供大家了解。

1.确保退出的容器被删除。

当Docker容器存在时,容器不会自动删除。您可以使用“docker ps -a”命令键查看所有容器,清理退出的容器,使用的命令如下。

docker  rm  - v  $(docker  ps  - a  - q  - f  status = exited)

这将删除退出的容器。-v标志表示所有不需要的容器都会被删除。假如没有这样的容器,你会看到如下的错误信息。

docker:“rm”至少需要1个参数。请参阅“docker rm -help”。

这意味着没有什么东西可以删除,你可以顺利通过。

2.删除不需要的“悬挂”映像。

Docker会保留您在磁盘中使用的所有映像,即使这些映像没有正在运行。这样做就可以保证在本地“缓存”中具有我们需要的映像。这简直太棒了,因为当你想拉取一个依赖于这些映像的图像,或者当你正在构建一个图像时,所有这些资源都是本地可用的。坏消息是,这会大大的消耗磁盘空间!

删除这些不需要的图像的命令是:

docker  rmi  $(docker  images  - f  “dangling = true”  - q)

同样,如果你没有任何这样的映像,你可能会得到一个错误消息,说明rmi命令需要一个参数。

还没有足够的空间?这个“vfs”目录是什么?

如果您的docker目录仍占用空间,那可能意味着您的磁盘中有不需要的容量体积。我们传递给rm命令的-v标志通常会顾及到这一点。但是有时候,如果关闭容器的方法不能自动删除容器,那么vfs目录会变得非常快。我们可以通过删除不需要的磁盘容积来回收这个空间。要做到这一点,有一个码头的图像,你可以使用!

以下是如何运行它。

码头 运行 - v  / var / run / docker。sock:/ var / run / docker。袜子 - v  / 无功/ lib中/ 泊坞窗:/ 无功/ lib中/ 泊坞窗 - RM  马丁/ 泊坞窗- 清理- 卷

如果你想要安全运行,看看它将要删除什么,只需要传递-dry-run作为参数。

当这个程序运行时,它会做删除所有不需要容积量的准备,然后释放你的磁盘空间。

4.我知道这很好,我每次都必须这样做吗?

那么接下来的问题当所有程序运行正常的情况下,只要我们的服务器被填满,我们就不得不手动运行它。所以我们决定对其进行自动化。这于crontabs是一件轻而易举的事情。把所有上面的命令放到/etc/cron.daily/目录下的文件中。我们在该目录中创建了一个名为docker-clean的文件,并具有执行权限。该文件包含以下内容。

docker  rm  - v  $(docker  ps  - a  - q  - f  status = exited)
docker  rmi  $(docker  images  - f  “dangling = true”  - q)
码头 运行 - v  / var / run / docker。sock:/ var / run / docker。袜子 - v  / 无功/ lib中/ 泊坞窗:/ 无功/ lib中/ 泊坞窗 - RM  马丁/ 泊坞窗- 清理- 卷

Linux将每天自动运行这个工作,并在Docker化后进行清理工作。我个人认为这应该作为一个管家功能加入到docker守护进程中。不管怎么说吧,码农们也很自豪可以建造一个这样的工具。

本文的版权归 庹阳 所有,如需转载请联系作者。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • DBaaS的八大好处

    数据库作为一种服务(或者称为DBaaS)是一种基于云的服务,它可为用户提供灵活,可扩展的按需平台。就像其他“作为服务”解决方案一样,DBaaS专注于自助服务,简...

    庹阳
  • 不要轻视你的业务运营:5种降低SaaS流失率的方法

    “搅动”这个词有很多含义。一方面,你搅拌黄油,这是美味的。另一方面,SaaS的流动率是SaaS公司失败的最常见原因之一。那么,我们能做些什么来降低您的SaaS流...

    庹阳
  • Visual Studio中使用云浏览器文档开发,你学会了吗?

    最近,在Global Azure Boot Camp的一个演示期间,有人提出了一个关于如何查看和浏览云浏览器进行文档数据处理的离线问题。那我猜想,肯定有很多开发...

    庹阳
  • Linux

    1、Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。

    用户4158112
  • 我的 Docker 卡死了,怎么办?在线等

    最近升级了一版 kubelet,修复因 kubelet 删除 Pod 慢导致平台删除集群超时的问题。在灰度 redis 隔离集群的时候,发现升级 kubelet...

    米开朗基杨
  • Docker的安装以及加速器的配置

    目前,CentOS 仅发行版本中的内核支持 Docker。Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内...

    Python编程与实战
  • Centos7上安装docker 转

    Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE。

    双面人
  • 「走进k8s」Docker 简介和安装(一)

    PS:docker已经安装成功了。之前写的文章太官方了,现在要让更通俗,很易懂的方式让更多人了解和使用docker。

    IT故事会
  • SpringBoot非官方教程 | 第二十四篇: springboot整合docker

    这篇文篇介绍,怎么为 springboot程序构建一个docker镜像。docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开...

    方志朋
  • Docker-如何清理磁盘占用

    最近开始打包我们的一些应用,不得不说,我已经爱上了Docker这个工具。在AWS EC2上,它的存在使我们的工作方便了许多。然而,我们遇到的唯一问题是Docke...

    Shedray大数据专栏

扫码关注云+社区

领取腾讯云代金券