前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker,请做好自己的清理工作

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

作者头像
庹阳
修改2018-01-30 17:13:03
1.5K0
修改2018-01-30 17:13:03
举报
文章被收录于专栏:Tencentcloud

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

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

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

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

代码语言:javascript
复制
docker  rm  - v  $(docker  ps  - a  - q  - f  status = exited)

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

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

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

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

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

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

代码语言:javascript
复制
docker  rmi  $(docker  images  - f  “dangling = true”  - q)

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

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

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

以下是如何运行它。

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

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

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

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.确保退出的容器被删除。
  • 2.删除不需要的“悬挂”映像。
  • 还没有足够的空间?这个“vfs”目录是什么?
  • 4.我知道这很好,我每次都必须这样做吗?
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档