为了账号安全,请及时绑定邮箱和手机立即绑定

如何删除旧的和未使用的码头形象

如何删除旧的和未使用的码头形象

ABOUTYOU 2019-09-01 08:04:02
如何删除旧的和未使用的码头形象在长时间运行码头时,系统中存在大量的图像。如何安全地同时删除所有未使用的Docker映像以释放存储空间?此外,我还想删除几个月前提取的图像,这些图像具有正确的TAG.所以,我不是要求只删除无标记的图像。我正在寻找一种方法来删除一般未使用的图像,其中包括未标记的图像和其他图像,比如几个月前使用正确的TAG.
查看完整描述

3 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

码头1.13:Pr 26108和提交86de7c0引入一些新的命令,以帮助可视化对接守护进程数据在磁盘上占用的空间,并允许轻松清理“不必要”的多余空间。

docker system prune将删除所有悬空数据(即:停止的容器、没有容器的卷和没有容器的图像)。甚至未使用的数据-a选择。

你还拥有:

  • docker container prune

  • docker image prune

  • docker network prune

  • docker volume prune

为未用图像,使用docker image prune -a(用于移除悬挂物)和未经处理的图像)。
警告:‘未用意思是“没有任何容器引用的图像”:在使用之前要小心-a.

如上文所示阿升氏回答, docker system prune --all将移除所有未用图像不仅仅是悬空的.。这可能有点太过分了。

结合docker xxx prune带着--filter期权是限制修剪的好方法(DockerSDKAPI 1.28最低,所以码头17.04+)

目前支持的过滤器是:

  • until (<timestamp>)

    -仅删除在给定时间戳之前创建的容器、图像和网络
  • label (label=<key>label=<key>=<value>label!=<key>

    ,或

    label!=<key>=<value>

    )-只使用(或)删除容器、图像、网络和卷。

    ,以防万一

    label!=...

    指定的标签。

见“剪枝图像“举个例子。


原答复(2016年9月)

我通常会:

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

我有一个移除那些[悬空图像]的别名13: drmi

这个dangling=true筛选器查找未使用的图像

这样,不再被标记的图像引用的任何中间图像被删除。

我也这么做第一为退出过程(集装箱)

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

如哈立兹指出在评论中:

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


杰斯·弗雷泽尔(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容器和图像垃圾收集脚本。

  • 一个多小时前离开的容器被移除。
  • 删除后不属于任何剩余容器的图像。




查看完整回答
反对 回复 2019-09-02
  • 3 回答
  • 0 关注
  • 475 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信