docker删除镜像的时候报错--image has dependent child images

背景

偶然间发现服务器上有很多镜像占用不少空间,想清理一下。
结果直接进行删除报错:

docker rmi 8f5116cbc201

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

然后上网需求方法,主流的方法有两种

方法一:强制删除镜像

docker rmi -f 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删除容器

docker rm REPOSITORY:TAG

补充

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没有自动垃圾回收处理机制,未来可能会有这方面的改进,但是目前我们只能这样手动清理(写个脚本就好)。

原文地址:https://www.cnblogs.com/111testing/p/11208086.html

时间: 2024-08-26 08:28:22

docker删除镜像的时候报错--image has dependent child images的相关文章

Docker删除镜像报错

问题描述: 笔者意图删除nginx-file的镜像文件,但通过命令删除镜像时出现报错信息,提示存在多个引用(即一个IMAGE可被多个REPOSITORY引用,故删除会出现失败),如下: [[email protected] ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE kazihuo/nginx v1 60c22883bb42 6 minutes ago 372 MB nginx-file v1 60c22883bb42 6 min

docker删除镜像时报错解决办法

报错信息 [[email protected] ~]# docker rmi 4950a54ede5a Error response from daemon: conflict: unable to delete 4950a54ede5a (must be forced) - image is being used by stopped container 834789a17497 报错原因 image is being used by stopped container 834789a1749

解决跟Docker私有仓库登陆,推送,拉取镜像出现的报错

出现问题:Error response from daemon: Get https://192.168.186.120/v1/users/: dial tcp 192.168.186.120:443: getsockopt: connection refused http: server gave HTTP response to HTTPS client 出现这问题的原因是:Docker自从1.3.X之后docker registry交互默认使用的是HTTPS,但是搭建私有镜像默认使用的是H

docker中pip install/uninstall报错

docker中pip install or uninstall报错 事件起因 今天开发同学咨询了一个问题,他说在docker的一个运行容器中执行如下命令: cd /usr/lib/python2.7/site-packages/ 该目录下有两个目录,分别是:smart_open 和 samrt_open-1.5.5-py2.7.egg-info rm -rf samrt_open-1.5.5-py2.7.egg-info/ 这时出现报错,报错信息如下: rm: cannot remove 'sm

window7下docker toolbox 启用数据卷报错: Error response from daemon: invalid mode:

场景:希望把d:\dockerShare文件夹作为数据卷 ,和docker中的centos镜像生成的容器关联. 原来的命令: docker run -d -it --name=edc-centos7 -v edc-centos7-vol:D:\dockershare centos:latest 报错: d:\Program Files\Docker Toolbox\docker.exe: Error response from daemon: invalid mode: \dockershare

解决CentOS7下运行docker容器时出现的报错Error resolving syscall name...

最近在研究docker!在虚拟机centos7中运行docker经常会有: [[email protected] docker]$ docker run -it lin/centos6 /bin/bash 2016/11/08 19:38:53 Error resolving syscall name execveat: could not resolve name to syscall - ignoring syscall. 2016/11/08 19:38:53 Error resolvin

Eclipse Maven项目报错2之A child container failed during start

问题:在同事那里拿了一个Eclipse的maven项目,导入报错,主要显示的是A child container failed during start 具体错误如下 六月 02, 2018 12:08:50 下午 org.apache.tomcat.util.digester.SetPropertiesRule begin 警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source'

排查sqoop报错:Error running child : java.lang.OutOfMemoryError: Java heap space

报错栈: 2017-06-16 19:50:51,002 INFO [main] org.apache.hadoop.mapred.MapTask: Processing split: 1=1 AND 1=1 2017-06-16 19:50:51,043 INFO [main] org.apache.sqoop.mapreduce.db.DBRecordReader: Working on split: 1=1 AND 1=1 2017-06-16 19:50:51,095 INFO [mai

Docker 删除镜像

分为两种: 删除正常的镜像 sudo docker rmi <IMAGE ID>  或 sudo docker rmi <RPOSITORY:TAG> 删除none类型的异常镜像 sudo docker ps -a | grep "Exited" | awk '{print $1 }'|xargs sudo docker stop      sudo docker ps -a | grep "Exited" | awk '{print $1