前言
云原生日益普及的现在,docker容器化成为现有很多服务的改进方向,docker凭借更高效的利用系统资源、更快速的启动时间、一致的运行环境、持续支付和部署、更轻松的迁移、更轻松的维护和拓展等优势,迅速走红。但是,很多容器部署后在回收时,都会遇到各种各样的问题,比如今天讨论的删除镜像的问题,有时候删除操作会莫名其妙的报错。
问题
今天遇到了一个问题,在我想要删除一个过期的镜像文件的时候,莫名其妙的报了一个错误。
下图是我在服务器上的镜像列表,其中有很多需要删除的过期镜像。理论上来说,清理过期镜像应该属于常规操作,但是没想到,问题还不少。
一般操作都是直接使用命令 docker rmi 镜像ID
来删除对应的镜像,但是我遇到了如下报错:
详细的报错信息如下:
Error response from daemon: conflict: unable to delete f73fe6298efc (cannot be forced) - image has dependent child images
解决
后来,通过查阅资料,发现删除镜像其实有很大的玄机。一般来说,使用如下方法和递进关系尝试删除镜像:
方法一、删除命令如下:
docker rmi 镜像ID
方法二、如果方法一不行,可以考虑使用方法二,命令如下:
docker rmi -f 镜像ID
方法三、如果方法二也不行,就可以考虑使用方式三,命令如下:
docker rmi 镜像仓库名:tag
平时,我们工作中遇到的所有镜像删除失败的问题,会这三板斧基本上就够用了。
下图是我删除对应的镜像成功的截图:
结尾
掌握 docker 的日常使用方法,对于服务端开发同学来说,是一项基本技能。大家好,我是 liuzhen007,中国邦德,中国一个会敲代码的邦德,欢迎大家关注我。
作者简介:😄大家好,我是 Data-Mining(liuzhen007),是一位典型的音视频技术爱好者,前后就职于传统广电巨头和音视频互联网公司,具有丰富的音视频直播和点播相关经验,对 WebRTC、FFmpeg 和 Electron 有非常深入的了解,😄公众号:玩转音视频。同时也是 CSDN 博客专家、华为云享专家(共创编辑)、InfoQ 签约作者,欢迎关注我分享更多干货!😄