当前位置: 首页 > 知识库问答 >
问题:

如何删除旧的和未使用的Docker图像

邰博远
2023-03-14

在长期运行Docker时,系统中会出现大量的图像。我如何删除所有未使用的Docker映像一次安全释放存储?

此外,我还想移除几个月前拉出的图像,这些图像具有正确的标记

共有1个答案

公孙胡媚
2023-03-14

2016年9月更新:Docker 1.13:PR 26108和Commit86DE7C0引入了一些新的命令,以帮助直观显示Docker守护进程数据占用磁盘的空间,并允许轻松清理“不需要的”多余空间。

Docker system Prune将删除所有悬空数据(即按顺序:停止容器、没有容器的卷和没有容器的图像)。即使是未使用的数据,也可以使用-a选项。

您还拥有:

  • Docker容器清理
  • Docker图像修剪
  • Docker网络剪枝
  • Docker卷清理

对于未使用的图像,请使用Docker image Prune-a(用于删除悬空和未使用的图像)。
警告:“未使用”表示“未被任何容器引用的图像”:使用-a之前要小心。

如A L的答案所示,Docker system Prune-All将删除所有未使用的图像,而不仅仅是悬挂的图像。这可能有点太过分了。

docker xxx prune--filter选项结合起来可以很好地限制剪枝(docker SDK API 1.28最小值,因此docker 17.04+)

当前支持的筛选器有:

  • 直到( ) -仅删除在给定时间戳之前创建的容器、映像和网络
  • 标签(标签= ,标签= ,标签!= ,或标签!= = )-仅删除带有(如果使用标签!=...)指定标签的容器、图像、网络和卷。

请参阅“剪枝图像”获取示例。

原答案(2016年9月)

我通常会:

docker rmi $(docker images --filter "dangling=true" -q --no-trunc)

我首先对退出的进程(容器)执行相同的操作

alias drmae='docker rm $(docker ps -qa --no-trunc --filter "status=exited")'

正如haridsv在评论中指出的:

从技术上讲,您应该在清理图像之前首先清理容器,因为这样可以捕获更多的悬空图像和更少的错误。

Jess Frazelle(jfrazelle)具有bashrc功能:

dcleanup(){
    docker rm -v $(docker ps --filter status=exited -q 2>/dev/null) 2>/dev/null
    docker rmi $(docker images --filter dangling=true -q 2>/dev/null) 2>/dev/null
}

要删除旧映像,而不仅仅是“未引用的悬空”映像,您可以考虑docker-gc:

  • 一个多小时前退出的容器将被删除。
  • 删除之后不属于任何剩余容器的图像。
 类似资料:
  • 问题内容: 长时间运行Docker时,系统中有很多映像。如何安全地一次删除所有未使用的Docker映像以释放存储空间? 另外,我还想删除几个月前拉出的具有正确图像。 因此,我并不是要仅删除未标记的图像。我正在寻找一种删除常规未使用图像的方法,其中包括未标记的图像和其他图像,例如几个月前使用正确的图像拉出的图像。 问题答案: 2016年9月更新:Docker 1.13:PR 26108和commit

  • 问题内容: 此问题与我是否应该担心多余的,未运行的Docker容器有关?。 我想知道如何删除旧容器。将让你删除一个,但我有很多了。没有提供选择选项(如全部,或按图像名称)。 也许有一个存储这些容器的目录,可以方便地手动删除它们? 问题答案: 从Docker 1.13.x开始, 您可以使用Docker容器prune: 这将删除所有停止的容器,并且应在所有平台上以相同的方式工作。 还有一个Docker

  • 我有以下图片: 当我试图移除其中一个时,我得到: 我怎样才能移除它们?为什么会有这样的冲突?

  • 我正在OS X 10.8.4(Mountain Lion)下的Vagrant下运行Docker,每当我试图删除一个保存的图像时,我会得到一个错误: 根据帮助,正确的语法是,我不知道该如何解释。 如何删除图像?   有趣的是,当我运行时,根本没有容器显示。运行将显示四(4)个图像和一(1)个图像。

  • (F.Y.I.我已经在互联网上搜索了很多文档。我正在使用storm-0.10.0-beta1。storm中log4j2的配置文件是worker.xml) 现在,我尝试使用log4j2。 我正在寻找删除旧日志的方法,但我找不到。部分配置如下。 起初,我期望删除超过3天的日志文件。 但事实上,事实并非如此。 所以,我想知道是否有办法删除旧日志。 如果有一条路我还没有找到,请通知我。

  • 问题内容: 我已经使用docker.com上的安装教程安装了docker 。现在,我需要将其完全删除。,,,或任何其他组合不工作,因为我没有使用apt- get安装它。有什么方法可以比手动删除Docker更快地删除它? (如果有任何区别,我正在使用Ubuntu 14.04)。 问题答案: 在卸载步骤中提到: 注意:chasmani添加了注释: 我还必须添加,并在前两行中完全删除 它增加了: 上面的