在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相同的鏡像的操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。
相關文章: