如何快速清理码头工人资源

  

前言

  

如果经常使用码头工人,你会发现码头工人占用的资源膨胀很快,其中最明显也最容易被察觉的应该是对磁盘空间的占用。本文将介绍如何快速的清理码头工人占用的系统资源,具体点说就是删除那些无用的镜像,容器,网络和数据卷。

  

查看码头工人占用的资源

  

在进行资源清理之前我们有必要搞清楚码头工人都占用了哪些系统的资源,这需要综合使用不同的命令来完成。

  
      <李>   

    码头工人容器ls:默认只列出正在运行的容器,——选项会列出包括停止的所有容器。

      李   <李>   

    码头工人形象ls:列出镜像信息,——选项会列出中间镜像(就是其它镜像依赖的层)。

      李   <李>   

    码头工人卷ls:列出数据卷。

      李   <李>   

    码头工人网络ls:列出网络。

      李   <李>码头工人信息:显示系统级别的信息,比如容器和镜像的数量等。   
  

通过这些命令查看码头工人使用的资源情况后,相信你已经决定要清理码头工人占用的一些资源了!让我们先从那些未被使用的资源开始。

  

只删除那些未被使用的资源

  

码头工人提供了方便的码头工人系统修剪命令来删除那些已停止的容器,悬空镜像,未被容器引用的网络和构建过程中的缓存:

  
 <代码>美元码头工人系统删除 
  

如何快速清理码头工人资源

  

安全起见,这个命令默认不会删除那些未被任何容器引用的数据卷,如果需要同时删除这些数据卷,你需要显式的指定——抑扬顿挫参数。比如你可能想要执行下面的命令:

  
 <代码>美元码头工人系统删除——所有的力量——抑扬顿挫 
  

这次不仅会删除数据卷,而且连确认的过程都没有了!注意,使用,所有参数后会删除所有未被引用的镜像而不仅仅是悬空镜像。

  

这里有必要解释一下何为悬空的图像,其实可以简单的理解为未被任何镜像引用的镜像。比如在你重新构建了镜像后,那些之前构建的且不再被引用的镜像层就变成了晃来晃去的图片:

  

如何快速清理码头工人资源

  

在本地的镜像更新之后,就会出现类似图中红框内的& lt; none>镜像。这表示旧的镜像已经不再被引用了,此时它们就变成了晃来晃去的图片。

  

如果使用——参数,你还会发现另外一种类型的& lt; none>镜像,它们的库和标签列都表现为& lt; none>:

  

如何快速清理码头工人资源

  

这些镜像被称为中间镜像(就是其它镜像依赖的层)。

  

我们还可在不同在子命令下执行删除,这样删除的就是某类资源:

  
      <李>   

    集装箱码头工人修剪#删除所有退出状态的容器

      李   <李>   

    码头工人卷删除#删除未被使用的数据卷

      李   <李>码头工人形象修剪#删除悬挂或所有未被使用的镜像李   
  

让码头工人回到安装时的状态

  

这里的“安装时的状态,指资源占用情况而不是码头工人的相关配置。这也是一种比较常见的用例,比如笔者就需要在一个干净的码头工人环境中自动化的还原出某天的一个生产环境(使用生产环境的备份数据)用于错误调查。让我们一起来看看都需要做些什么?

  

回想我们前面介绍的码头工人系统删除——所有的力量——抑扬顿挫命令,如果在执行这个命令前系统中所有的容器都已停止,那么这个命令就会移除所有的资源!好,现在让我们想办法停掉系统中的所有容器。

  

集装箱码头工人停止命令可以停止一个或多个容器,我们只需要把系统中所有在运行的容器罗列出来就可以了。由于码头工人并不介意我们再次停止一个已经停止了的容器,干脆简单粗暴点,直接列出所有的容器(包括已经停止的)!

  
 <代码>美元集装箱码头工人ls - a - q  
  

如何快速清理码头工人资源

  

——显示所有的容器,q只显示数字形式的容器ID。

  

然后把这里命令执行的结果作为集装箱码头工人停止命令的参数:

如何快速清理码头工人资源