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.所以我先试着停掉所有容器 再来删除试试
1 |
docker stop $(docker ps -aq) |
不行,无法删除,我们再删除所以容器
还是删不掉,忽然想起,这些新的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.删除容器后,方可删除该容器所依赖的镜像文件
完
- 本文固定链接: https://www.yoyoask.com/?p=81
- 转载请注明: shooter 于 SHOOTER 发表