前言
云原生日益普及的现在,docker容器化成为现有很多服务的改进方向,docker凭借更高效的利用系统资源、更快速的启动时间、一致的运行环境、持续支付和部署、更轻松的迁移、更轻松的维护和拓展等优势,迅速走红。但是,很多容器部署后在回收时,都会遇到各种各样的问题,比如今天讨论的删除镜像的问题,有时候删除操作会莫名其妙的报错。
问题
今天遇到了一个问题,在我想要删除一个过期的镜像文件的时候,莫名其妙的报了一个错误。
下图是我在服务器上的镜像列表,其中有很多需要删除的过期镜像。理论上来说,清理过期镜像应该属于常规操作,但是没想到,问题还不少。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PU88ohoo-1628432878837)(<> “点击并拖拽以移动”)]
一般操作都是直接使用命令 docker rmi 镜像ID
来删除对应的镜像,但是我遇到了如下报错:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6nnwJcQR-1628432878840)(<> “点击并拖拽以移动”)]
详细的报错信息如下:
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
平时,我们工作中遇到的所有镜像删除失败的问题,会这三板斧基本上就够用了。
下图是我删除对应的镜像成功的截图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kAr0AhDT-1628432878842)(<> “点击并拖拽以移动”)]
结尾
掌握 docker 的日常使用方法,对于服务端开发同学来说,是一项基本技能。大家好,我是 liuzhen007,中国邦德,中国一个会敲代码的邦德,欢迎大家关注我。