Docker的资源扩张这么快,你知道怎么清理吗?
在清理资源之前,我们有必要弄清楚docker占用了哪些系统资源。这需要不同命令的组合。
Docker容器ls:默认情况下,只列出正在运行的容器,而-a选项列出包括停靠站在内的所有容器。
Docker image ls:列出图像信息,而-a选项列出中间图像(即其他图像所依赖的层)。
Docker卷ls:列出数据卷。
Docker网络ls:列表网络。
Docker info:显示系统级信息,如容器和镜像的数量。
通过这些命令查看了docker使用的资源后,相信你已经决定清理docker占用的部分资源了!让我们从那些未使用的资源开始。
Docker提供了一个方便的docker系统修剪命令,用于删除停止的容器、悬挂的图像、容器未引用的网络以及构造期间的缓存:
& ltpre style = " margin:0px;填充:0px空白:预换行;自动换行:断字;字体系列:“快递新”!重要;font-size: 12px!重要;”& gt$ docker系统清理& lt/pre & gt;
为了安全起见,默认情况下,该命令不会删除没有被任何容器引用的数据卷。如果需要同时删除这些数据卷,则需要显式指定- volumns参数。例如,您可能希望执行以下命令:
& ltpre style = " margin:0px;填充:0px空白:预换行;自动换行:断字;字体系列:“快递新”!重要;font-size: 12px!重要;”& gt$ docker系统prune-all-force-volums & lt;/pre & gt;
这次不仅删除数据量,而且没有确认过程!请注意,使用- all参数将删除所有未引用的图像,而不仅仅是悬挂的图像。
有必要解释一下什么是悬空图像,悬空图像可以简单理解为不被任何镜像引用的镜像。例如,重建镜像后,以前构建的不再被引用的镜像层将成为悬挂图像:
本地镜像更新后,类似于
这些图像称为中间图像(即其他图像所依赖的层)。
我们还可以在不同的子命令下执行prune,从而删除特定类型的资源:
Docker容器prune #删除所有退出该状态的容器。
Docker卷清理#删除未使用的数据卷。
Docker图像修剪#删除悬挂或所有未使用的图像。
这里的“安装状态”指的是资源占用而不是docker的相关配置。这也是一个常见的用例。例如,作者需要在一个干净的docker环境中自动恢复一个生产环境(使用生产环境的备份数据),以便进行bug调查。让我们看看需要做些什么。
回想一下我们前面介绍的docker系统prune-all-force-volumns命令。如果在执行这个命令之前,系统中的所有容器都已经停止,那么这个命令将删除所有资源!好,现在让我们尝试停止系统中的所有容器。
docker容器停止命令可以停止一个或多个容器。我们只需要列出系统中所有运行的容器。因为docker并不介意我们再次停止一个已经停止的容器,直接简单粗暴的列出所有的容器(包括已经停止的)就可以了!
& ltpre style = " margin:0px;填充:0px空白:预换行;自动换行:断字;字体系列:“快递新”!重要;font-size: 12px!重要;”& gt$ docker容器ls-a-q & lt;/pre & gt;
-a显示所有容器,而-q仅显示数字形式的容器ID。
然后把这里命令的执行结果作为docker容器停止命令的参数:
& ltpre style = " margin:0px;填充:0px空白:预换行;自动换行:断字;字体系列:“快递新”!重要;font-size: 12px!重要;”& gt(docker容器ls-a-q)& lt;/pre & gt;
恢复docker环境的完整命令如下:
& ltpre style = " margin:0px;填充:0px空白:预换行;自动换行:断字;字体系列:“快递新”!重要;font-size: 12px!重要;”& gt(码头集装箱ls-a-q);& ampdocker系统prune-all-force-volums & lt;/pre & gt;
与前面的清理命令类似,您也可以完全删除特定类型的资源:
删除容器:docker容器RM (docker映像ls-a-q)
删除数据卷:docker卷RM (docker网络ls-q)
上面的命令可以完成任务,但是很繁琐。我们可以通过shell的别名功能来简化这些命令的执行。
& ltpre style = " margin:0px;填充:0px空白:预换行;自动换行:断字;字体系列:“快递新”!重要;font-size: 12px!重要;”& gt别名docker-clean-unused = ' docker system prune-all-force-volumes '别名docker-clean-all = ' docker stop $(docker容器ls-a-q)& amp;& ampdocker系统修剪所有力卷' & lt/pre & gt;
把上面的命令写到用户的~/里就可以了。bashrc文件!
执行清洁任务:
经常清理系统资源不仅可以让系统运行更加流畅,还可以帮助我们专注于相关的关键资源。所以建议大家可以使用相关的资源清理命令来保持docker的新鲜高效。
参考:
用简单的命令清理你的Docker镜像、容器和卷
Python零基础入门课程
本课程为面授课和网络课,1 * * * 15课时,每周一整天,持续4个月。附:视频录制+笔记+答疑2065 438+9-6月开课。
高级Python自动化操作和维护课程
本课程为面授课和网络课,1 * * * 15课时,每周一整天,持续4个月。附加:视频录制+笔记+问答2065 438+9-4月开课。
Docker+K8s课程
本课程为网络课,150课时,每周一整天,持续4个月。附:录制视频+笔记+问答现已开始。
立即注册,享受早鸟价格。
戈朗课程
提前报名可以享受早鸟价。
想了解更多并注册的同学可以扫码添加好友私聊。