image has dependent child images

news/2024/7/5 3:57:53

问题:很多none的镜像无法被删除

解决过程:

1、通过 docker image prune -f 提示可删除为 0

2、直接进行删除报错:

docker rmi 8f5116cbc201

Error response from daemon: conflict: unable to delete 8f5116cbc201 (cannot be forced) - image has dependent child images

批量删除容器,再删除镜像

# 停止所有容器
docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker stop

# 删除所有容器
docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker rm

# 删除所有none镜像
docker images|grep none|awk '{print $3 }'|xargs docker rmi

还是以失败告终。。。。。

原因
发现其实是因为TAG的问题,即有其他 image FROM 了这个 image,可以使用下面的命令列出所有在指定 image 之后创建的 image 的父 image

方案:
先查询依赖

docker image inspect --format='{{.RepoTags}} {{.Id}} {{.Parent}}' $(docker image ls -q --filter since=XXX) # XXX指镜像ID

然后根据根据TAG删除容器,发现与之关联的none会自动删除

docker rm REPOSITORY:TAG

最终方案:

先保存镜像,关联的none会自动删除,最后在导入镜像,此时之前的none也不会在显示

docker images -a |grep -v none |awk '{print "docker save "$1":"$2 " >"$2".tar && docker rmi "$1":"$2" && docker load -i "$2".tar && docker image ls -a|grep "$2""}' >docker_image.sh

./docker_image.sh

补充
docker none镜像

有效的 none 镜像
Docker文件系统的组成,docker镜像是由很多 layers组成的,每个 layer之间有父子关系,所有的docker文件系统层默认都存储在/var/lib/docker/graph目录下,docker称之为图层数据库。

最后做一个总结< none>:< none> 镜像是一种中间镜像,我们可以使用docker images -a来看到,他们不会造成硬盘空间占用的问题(因为这是镜像的父层,必须存在的),但是会给我们的判断带来迷惑。

无效的 none 镜像

另一种类型的 < none>:< none> 镜像是dangling images ,这种类型会造成磁盘空间占用问题。

像Java和Golang这种编程语言都有一个内存区,这个内存区不会关联任何的代码。这些语言的垃圾回收系统优先回收这块区域的空间,将他返回给堆内存,所以这块内存区对于之后的内存分配是有用的

docker的悬挂(dangling)文件系统与上面的原理类似,他是没有被使用到的并且不会关联任何镜像,因此我们需要一种机制去清理这些悬空镜像。

我们在上文已经提到了有效的< none>镜像,他们是一种中间层,那无效的< none>镜像又是怎么出现的?这些 dangling镜像主要是我们触发 docker build 和 docker pull命令产生的。

使用下面的命令可以清理
docker rmi $(docker images -f “dangling=true” -q)
docker没有自动垃圾回收处理机制,未来可能会有这方面的改进,但是目前我们只能这样手动清理(写个脚本就好)。


http://lihuaxi.xjx100.cn/news/1445913.html

相关文章

【算法】Fisher-Yate洗牌算法

算法描述 Fisher-Yates 洗牌算法&#xff08;Fisher-Yates Shuffle&#xff09;是一种用于随机打乱数组或列表元素顺序的算法&#xff0c;以获取随机排列。这个算法是由 Ronald A. Fisher 和 Frank Yates 于 1938 年开发的&#xff0c;用于生成无偏的、随机的排列顺序。 Fishe…

W6100-EVB-PICO 做UDP Server进行数据回环测试(七)

前言 前面我们用W6100-EVB-PICO 开发板在TCP Client和TCP Server模式下&#xff0c;分别进行数据回环测试&#xff0c;本章我们将用开发板在UDP Server模式下进行数据回环测试。 UDP是什么&#xff1f;什么是UDP Server&#xff1f;能干什么&#xff1f; UDP (User Dataqram P…

快速了解steam、csgo游戏搬砖,steam搬砖项目分享

科思创业汇 大家好&#xff0c;这里是科思创业汇&#xff0c;一个轻资产创业孵化平台。赚钱的方式有很多种&#xff0c;我希望在科思创业汇能够给你带来最快乐的那一种&#xff01; 我相信你对移动游戏并不陌生&#xff0c;但有些朋友不应该听说过steam和csgo这个词。steam是…

【C语言】每日一题(寻找数组的中心下标)

寻找数组的中心下标&#xff0c;链接奉上 方法 暴力循环前缀和 暴力循环 ​​​​​​​思路&#xff1a; 依旧是我们的老朋友&#xff0c;暴力循环。 1.可以利用外层for循环&#xff0c;循环变量为数组下标&#xff0c;在循环内分别求出下标左边与右边的sum 2.在边界时讨论&…

EB配置------PORT(一)

今天学习了PortPinInputPullResistor 这个配置。 虽然它配置为输出后显示不可更改&#xff0c;但是它默认的配置依然有效。 该参数允许为所选端口引脚配置内部拉电阻[向上/向下]。 注意&#xff1a;此参数的默认值设置为相应SFR的重置值。 PORT_PIN_IN_NO_PULL&#xff1a;…

【CTF-MISC】眼见非实(掌握各类文件头)

题目链接&#xff1a;https://ctf.bugku.com/challenges/detail/id/5.html 下载是一个.docx文档&#xff0c;用010 Editor打开查看文件头发现应该是zip文件&#xff0c;修改后缀后解压&#xff0c;查找flag。 各类常用文件头如下表所示。 文件类型文件头JPEG (jpg)FFD8FFE1PNG…

日常BUG——SpringBoot关于父子工程依赖问题

&#x1f61c;作 者&#xff1a;是江迪呀✒️本文关键词&#xff1a;日常BUG、BUG、问题分析☀️每日 一言 &#xff1a;存在错误说明你在进步&#xff01; 一、问题描述 在父子工程A和B中。A依赖于B&#xff0c;但是A中却无法引入B中的依赖&#xff0c;具体出现的…

盒子阴影效果与环绕阴影

box-shadow 在前端样式里面&#xff0c;最常见的一中效果之一就是阴影&#xff0c;好的阴影可以瞬间给人一种高端的用户体验&#xff0c;今天简单总结下这个样式的语法与使用方法。 语法 box-shadow的语法其实是比较简单好记的&#xff0c;我们按照最全面的写法来看 x轴偏移…