在docker下删除两个id相同的镜像的操作
今天建立docker容器的时候由于疏忽,镜像的名字输错了,结果容器创建成功后,镜像中出现两个id相同的:
使用docker rmi e4a35914679d删除的时候执行失败:
Error response from daemon: conflict: unable to delete e4a35914679d (must be forced) - image is referenced in one or more repositories
提示应该是该id有两个本地文件,不能用id删除。
所以我想删除所有镜像docker rmi $(docker images -q),出现下面错误
Error response from daemon: conflict: unable to delete e4a35914679d (must be forced) - image is referenced in one or more repositories
后来在Stack Overflow删看到使用repository和tag进行操作的,所以执行docker rmi docker.io/redis:3.2
再次查询的时候只剩下一个镜像,删除OK。
所以,可以使用repository:tag的组合来删除特殊的镜像。
补充知识:Docker 删除空白TAG和REPOSITORY的镜像
初步学习了docker,发现一个问题。在误操作后。会遗留一个只有IMAGE ID 的空白镜像
如何删除它,尝试了几次才成功。
当你想删除空白TAG和空白REPOSITORY的镜像时,列出当前镜像
[root@iZ25kr7psegZ ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEazkaban_centos latest 8993c0c20f01 24 hours ago 244MB<none> <none> d2dcb7c1f1ce 2 days ago 1.08GBmysql latest 990386cbd5c0 7 days ago 443MBcentos latest 9f38484d220f 2 months ago 202MBhello-world latest fce289e99eb9 4 months ago 1.84kB
执行删除语句 docker rmi IMAGE ID
[root@iZ25kr7psegZ ~]# docker rmi d2dcb7c1f1ce
Error response from daemon: conflict: unable to delete d2dcb7c1f1ce (must be forced) - image is being used by stopped container cde37d151fdf
这边提示你需要停止镜像所依赖的容器
[root@iZ25kr7psegZ ~]# docker stop cde37d151fdf
cde37d151fdf
然后删除这个容器。
[root@iZ25kr7psegZ ~]# docker rm cde37d151fdf
cde37d151fdf
接着就可以删除这个空白的镜像了。
[root@iZ25kr7psegZ ~]# docker rmi d2dcb7c1f1ceDeleted: sha256:d2dcb7c1f1ce916ea67a0a6c63cda40c62fa8dbc985845e64f3fafe9a37664f1Deleted: sha256:86ad6d366bb4d0c9e4b176bc220ff8d421902e2bcb197c7c017f8da854c3c72dDeleted: sha256:128e444c34b373f5e553883c65f676efdb2be22684bcbcf141fb724a7b3de316Deleted: sha256:15d26edbae6fafd6acad6e3308445846202230b66c6199cb236268f932b59ce8
再次查询一下镜像列表
[root@iZ25kr7psegZ ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEazkaban_centos latest 8993c0c20f01 24 hours ago 244MB<none> <none> adbcb407e207 2 days ago 571MBmysql latest 990386cbd5c0 7 days ago 443MBcentos latest 9f38484d220f 2 months ago 202MBhello-world latest fce289e99eb9 4 months ago 1.84kB
发现所占的SIZE从1.08G降到了571M。说明还存在另一个容器在保存这层镜像。可以想象成俄罗斯套娃。需要一层层的删除。肯定是做了过多的docker commit 操作。
重复操作过程中发现有时候一个镜像对应着不同的容器。
每提示一个容器ID就执行一次stop和rm操作。应该是启动次数过于频繁造成的镜像被重复加载。最终结果当然是删除干净了。
[root@iZ25kr7psegZ ~]# docker rmi cb9f332b969fDeleted: sha256:cb9f332b969ff425ef7bf781a1d7dff720dfa32a6e77a20347552b76f6b763ebDeleted: sha256:2a9ae33d11aadc05d24b58f67c6eb577c64eceff0528d06207e49963257e5f24[root@iZ25kr7psegZ ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEazkaban_centos latest 8993c0c20f01 24 hours ago 244MBmysql latest 990386cbd5c0 7 days ago 443MBcentos latest 9f38484d220f 2 months ago 202MBhello-world latest fce289e99eb9 4 months ago 1.84kB
以上这篇在docker下删除两个id相同的镜像的操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持好吧啦网。
相关文章:
1. 在Asp.net core项目中使用WebSocket2. ASP.NET MVC使用异步Action的方法3. 使用vue-cli创建项目并webpack打包的操作方法4. Docker配置本地镜像与容器的存储位置5. matplotlib如何设置坐标轴刻度的个数及标签的方法总结6. 使用python画出逻辑斯蒂映射(logistic map)中的分叉图案例7. SpringMVC+Jquery实现Ajax功能8. 浅谈springboot一个service内组件的加载顺序9. 利用FastReport传递图片参数在报表上展示签名信息的实现方法10. JavaScript使用Promise封装Axios进行高效开发