天天看點

阿裡雲部署Docker(6)----解決删除<none>鏡像問題

在docker使用中,經常會碰到删除鏡像不成功,反而讓鏡像變成了<none > <none>即,沒名字,沒tag的鏡像。

好多<none>,删又删不了。這主要是一些container使用了該image導緻的,不僅僅是說現在運作的容器,之前運作的也會。

可以查曆史記錄,然後将container commit成鏡像。

我們需要删除這些依賴image的container,當使用到該鏡像的所有container都删除了,就可以直接用image_id來删除該鏡像。

一個個的删除

好,删除幹淨了。還我們一個幹淨的工作區間。

docker的删除有兩種,一個是rm 删除容器,一個是rmi删除鏡像。

rm remove one or more containers rmi remove one or more images

這裡有兩個不同的單詞,images和container。其中images很好了解,跟平常使用的虛拟機的鏡像一個意思,相當于一個模版,而container則是images運作時的的狀态。docker對于運作過的image都保留一個狀态(container),可以使用指令<code>docker ps</code>來檢視正在運作的container,對于已經退出的container,則可以使用<code>docker ps -a</code>來檢視。 如果你退出了一個container而忘記儲存其中的資料,你可以使用<code>docker ps -a</code>來找到對應的運作過的container使用<code>docker commit</code>指令将其儲存為image然後運作。

回到之前的問題,由于image被某個container引用(拿來運作),如果不将這個引用的container銷毀(删除),那image肯定是不能被删除。

是以想要删除運作過的images必須首先删除它的container。繼續來看剛才的例子,

可以看出ed9c93747fe1的image被117843ade696的container使用着,是以必須首先删除該container

出現錯誤,這是因為該container正在運作中(運作<code>docker ps</code>檢視),先将其關閉

可以看出,image已經被删除