社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

本地Docker注册表卷被本地映像100%使用,如何从中释放空间?

Abhishek Yadav • 5 年前 • 2585 次点击  

此外,我还想删除几个月前提取的图像,其中有正确的 TAG .

所以,我不要求只删除未标记的图像。我正在寻找一种方法来删除一般未使用的图像,包括未标记的图像和其他图像,例如几个月前用正确的 .

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/53526
 
2585 次点击  
文章 [ 24 ]  |  最新文章 5 年前
Zhao Li
Reply   •   1 楼
Zhao Li    7 年前

其他的答案很好,特别是:

docker system prune # doesn't clean out old images
docker system prune --all # cleans out too much

但我需要在这两个命令中间做点什么 filter

docker image prune --all --filter "until=4320h" # delete images older than 6 months ago; 4320h = 24 hour/day * 30 days/month * 6 months

希望有帮助:)

供参考: https://docs.docker.com/config/pruning/#prune-images

Wernight
Reply   •   2 楼
Wernight    9 年前

删除 旧标签 一个多月前的图片:

$ docker images --no-trunc --format '{{.ID}} {{.CreatedSince}}' \
    | grep ' months' | awk '{ print $1 }' \
    | xargs --no-run-if-empty docker rmi

失败 -f 旗帜。

示例 /etc/cron.daily/docker-gc

#!/bin/sh -e

# Delete all stopped containers (including data-only containers).
docker ps -a -q --no-trunc --filter "status=exited" | xargs --no-run-if-empty docker rm -v

# Delete all tagged images more than a month old
# (will fail to remove images still used).
docker images --no-trunc --format '{{.ID}} {{.CreatedSince}}' | grep ' months' | awk '{ print $1 }' | xargs --no-run-if-empty docker rmi || true

# Delete all 'untagged/dangling' (<none>) images
# Those are used for Docker caching mechanism.
docker images -q --no-trunc --filter dangling=true | xargs --no-run-if-empty docker rmi

# Delete all dangling volumes.
docker volume ls -qf dangling=true | xargs --no-run-if-empty docker volume rm
rubicks
Reply   •   3 楼
rubicks    7 年前

再次参考VonC,使用更新的 system prune . 不耐烦的人可以跳过提示 -f, --force 选项:

docker system prune -f

不耐烦和 还可以使用 -a, --all 选项:

docker system prune -af

https://docs.docker.com/engine/reference/commandline/system_prune/

更新:

VonC's answer 使用最近添加的 prune 命令。下面是相应的shell别名便利:

alias docker-clean=' \
  docker container prune -f ; \
  docker image prune -f ; \
  docker network prune -f ; \
  docker volume prune -f '

删除停止(退出)容器:

$ docker ps --no-trunc -aqf "status=exited" | xargs docker rm

删除未使用(悬挂)的图像:

$ docker images --no-trunc -aqf "dangling=true" | xargs docker rmi

严厉警告 关于 ,然后可以删除未使用(悬挂)的卷(v1.9及更高版本):

$ docker volume ls -qf "dangling=true" | xargs docker volume rm

它们位于一个方便的shell别名中:

alias docker-clean=' \
  docker ps --no-trunc -aqf "status=exited" | xargs docker rm ; \
  docker images --no-trunc -aqf "dangling=true" | xargs docker rmi ; \
  docker volume ls -qf "dangling=true" | xargs docker volume rm'

VonC
Reply   •   4 楼
VonC    7 年前

2016年9月更新:Docker 1.13: PR 26108 commit 86de7c0

docker system prune 将删除所有悬挂数据(即按顺序:容器已停止、没有容器的卷和没有容器的图像)。即使是未使用的数据 -a

你还有:

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

A L answer , docker system prune --all 将全部删除 图片不仅仅是悬挂的。。。可能有点太多了。

结合 docker xxx prune --filter option 是限制修剪的好方法( docker SDK API 1.28 minimum, so docker 17.04+ )

  • until (<timestamp>) -仅删除在给定时间戳之前创建的容器、图像和网络
  • label label=<key> , label=<key>=<value> , label!=<key> label!=<key>=<value> )-仅删除容器、图像、网络和卷 没有 ,以防万一 label!=...

见“ Prune images “举个例子。


原答案(2016年9月)

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

我有一个 alias for removing those [dangling images] 13 drmi

这个 dangling=true 过滤器查找未使用的图像

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

第一 对于 exited processes (containers)

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

haridsv 指出 in the comments

从技术上讲, 您应该先清理容器,然后再清理图像,因为这将捕获更多的悬挂图像和更少的错误


Jess Frazelle (jfrazelle) 拥有 bashrc function :

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容器和图像垃圾收集脚本。

  • 删除之后不属于任何剩余容器的图像。