4个实用小技巧,来给你的Docker 进行一次“大扫除”吧![转载]

简介: 如果您倾向于在工作中使用Docker,那么就不得不考虑那些遗留下来的容器和悬挂卷,小编在这里将介绍4个小技巧,来给您的Docker 做一次全面的“大扫除”吧!

写在前面

如果您倾向于在工作中使用Docker,那么就不得不考虑那些遗留下来的容器和悬挂卷,小编在这里将介绍4个小技巧,来给您的Docker 做一次全面的“大扫除”吧!

每隔一段时间您都需要清理一下自己的Docker,可能是通过简单删除闲置容器或卷的方式,亦或是其它方式。但无论使用哪种方式,您都应该了解清理Docker 所需的命令。而当您在虚拟机上运行Docker时,定时清理将变得更加重要。

Docker的清理任务并不是那么复杂,它们只是容易被人遗忘。但是,当您那些无用、闲置的容器正在占用大量空间时,您就需要清理它们(以及所有的残留物)来为真正有用的容器腾出更多的使用空间。

接下来,跟着小编来了解下该如何进行清理。

第一步:删除容器

首先,您需要了解并不是您创建的每个容器都会被永久使用,而且您也很容易忘记您所创造的那些闲置容器。有两个命令可以用来停止和删除所有的容器。但是,您可能有正在使用的容器,因此您并不希望进行大规模的删除操作

所以,当您要删除容器时,您首先需要查看系统上有哪些容器。为此,请执行以下命令:

docker ps –a

上面的命令将为您列出系统上处于运行和非运行状态下的所有容器(图A)。

(图A)快速浏览在Docker server上的容器

任何显示状态为“Exited”的容器都是已经停止运行了,并且可以安全删除的容器(如果您并不打算重新启动它)。要删除“Exited”状态下的容器,请输入如下命令:

docker rm CONTAINTER_ID

CONTAINER_ID的位置就是输入容器真实ID的前几位数字。

但是,当您想删除那些处于运行状态下的容器时,您首先需要使用以下命令来停止容器

docker stop CONTAINER_ID

CONTAINER_ID就是您想要删除的容器所独有的ID。现在,您可以按照上述相同的方式来删除容器了。

另外可以使用以下命令,来删除所有处于停止(Exited)状态下的容器:

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

第二步:删除Docker 卷

Docker数据卷是一个特殊的目录,位于一个或多个容器内,能够绕过Docker的存储驱动程序,并且可以直接与主机文件系统进行交互。数据卷作为容器之间持久、共享的数据,并在容器创建时预置进容器中。那么问题来了,当您删除容器时,卷可能会被保留

要删除(所谓的)悬挂卷,您应该输入如下命令:

docker volume rm $(docker volume ls -qf dangling=true)

您将看到类似于图B所示的内容。

(图B)用一个命令来删除悬挂卷

最后,输入以下命令以确保完成清理任务:

docker volume ls -qf dangling=true | xargs -r docker volume rm

第三步:使用精简的基础镜像

现在,大多数官方的Docker镜像使用的是以最新的Debian系统作为基础进行制作,代替了原先那些占用更大空间的镜像(如Ubuntu),您可以通过使用小巧的官方debian镜像(如debian:jessie)来节省空间。如果您觉得Debian镜像仍然不够小巧,可以通过BusyBox镜像将它们进一步压缩。您可以通过下载BusyBox镜像,随后运行一个容器,并使用以下命令来获取BusyBox的Shell访问权限:

docker run -it --rm busybox

进入BusyBox容器,开始构建。

第四步:使用cron进行自动化清理

假设您经常使用Docker,但似乎从来没有时间来清理Docker,那么您可能需要用到cron了。让我们创建一个cron作业(job)来进行自动化的日常清理工作。

首先要做的是为作业创建一个脚本。我们将脚本命名为docker_clean.sh,然后将其保存在 ~/中。

该文件的内容将是:

#!/bin/bash

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

docker volume rm $(docker volume ls -qf dangling=true)

保存并关闭文件。为了使它正常的运行,必须赋予它适当的权限。输入如下命令:

chmod 755 ~/docker_clean.sh

要想运行成功,就需要输入如下命令,将用户添加进Docker group 中。

sudo usermod -aG docker USER

其中USER是真实的用户名。

该用户需要注销后重新登录。现在,我们通过输入以下命令来创建cron作业:

crontab –e

在crontab文件的底部,添加以下内容:

0 0 1 ~/docker_clean.sh > /dev/null 2>&1

保存并关闭crontab文件。之后在每个午夜12点,Docker将自动进行清理任务,届时您就可以体验一个干净、整洁的Docker了。

保持清理

Docker将为您提供良好的服务。如果您经常清理服务器,那么极少会出现“空间已满”的状态——当Docker作为虚拟机运行时,这个问题尤为重要。经常清理Docker 来享受极致的体验吧!

目录
相关文章
|
7月前
|
Kubernetes Devops Docker
Kubernetes 和 Docker Swarm:现代 DevOps 的理想容器编排工具
本指南深入解析 Kubernetes 与 Docker Swarm 两大主流容器编排工具,涵盖安装、架构、网络、监控等核心维度,助您根据团队能力与业务需求精准选型,把握云原生时代的技术主动权。
655 115
|
7月前
|
缓存 前端开发 Docker
Docker Layer Caching:加速你的容器构建
Docker Layer Caching:加速你的容器构建
|
6月前
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
705 51
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
|
8月前
|
运维 持续交付 开发者
Docker:重塑现代应用开发的容器革命
Docker:重塑现代应用开发的容器革命
|
8月前
|
运维 持续交付 开发者
Docker:现代应用开发的容器化革命
Docker:现代应用开发的容器化革命