首页 > 运维 > Docker > Docker无法删除镜像错误!
2019
10-30

Docker无法删除镜像错误!

1.docker无法删除镜像,提示:守护进程错误响应:冲突:无法删除DE25A81A5a0B(无法强制)-映像具有从属子映像

2.查看镜像docker images

3. 注意:这里的镜像共有三层关系,源镜像php:7.1-fpm 容器运行配置成功后 commit到了shooter_php7.1:latest

然后源镜像容器又commit提交了一次,名字与第二次commit的镜像名相同(shooter_php7.1:latest),都没有打标签名称 了第二次提交的标签latest 导致第三次提交的tag挤掉了第二次commit提交的镜像tag,使之变为了<none>。然后就删不掉了

4.所以我先试着停掉所有容器 再来删除试试

不行,无法删除,我们再删除所以容器

还是删不掉,忽然想起,这些新的commit的镜像是通过,pull下来的源镜像衍生的,会不会此方面有关联,于是删掉源镜像再继续删除

还是删不掉 错误提示:Error response from daemon: conflict: unable to delete de25a81a5a0b (cannot be forced) – image has dependent child images

守护进程的错误响应:冲突:无法删除DE25A81A5a0B(无法强制)-映像具有从属子映像,可是我的所有容器都停止了,并且都删掉了,还具有关联是哪里的关联呢

再继续试试,从网上得知不可以用imges ID删除 可以用REPOSITORY名称+tag来删除,但是我想先删除最原始的镜像,然后删除第二次commit的镜像,再删除第三次commit的镜像。

看来这样可以,再试试按倒序删除 直接删除第三层

可以看到第三层镜像已经被清理掉,下来清理最后一层没有标签的,现在这层没有标签的,已经没有依赖了,其他容器或者他原来的父镜像都被删掉了,现在就可以用image ID 删除掉这些没有标签的镜像了。

删除完成

总结:

综上所述问题情况繁杂,但总结起来有以下几点

1.docker 运行中的容器->镜像不可删除(因为容器IMAGE 有引用 REPOSITORY 存储库名称。通俗点就是:因为有依赖该image的container,先删除container再删除image)

个人理解啊,有大佬认知不一样的请指点

2.docker 停止中的容器->镜像不可删除

3.删除容器后,方可删除该容器所依赖的镜像文件

最后编辑:
作者:shooter
这个作者貌似有点懒,什么都没有留下。