目錄
- docker刪除none鏡像
- docker none鏡像
- PS:docker 如何刪除none鏡像
docker刪除none鏡像
1、使用git bash進入到docker文件夾
2、查詢所有的none鏡像
docker images | grep none
3、查詢所有的none鏡像的id
docker images | grep none | awk '{print $3}'
4、刪除所有的none鏡像
docker images | grep none | awk '{print $3}' | xargs docker rmi
docker none鏡像
有效的 none 鏡像
Docker文件系統(tǒng)的組成,docker鏡像是由很多 layers組成的,每個 layer之間有父子關系,所有的docker文件系統(tǒng)層默認都存儲在/var/lib/docker/graph目錄下,docker稱之為圖層數(shù)據(jù)庫。
最后做一個總結(jié)< none>:< none> 鏡像是一種中間鏡像,我們可以使用docker images -a來看到,他們不會造成硬盤空間占用的問題(因為這是鏡像的父層,必須存在的),但是會給我們的判斷帶來迷惑。
無效的 none 鏡像
另一種類型的 < none>:< none> 鏡像是dangling images ,這種類型會造成磁盤空間占用問題。
像Java和Golang這種編程語言都有一個內(nèi)存區(qū),這個內(nèi)存區(qū)不會關聯(lián)任何的代碼。這些語言的垃圾回收系統(tǒng)優(yōu)先回收這塊區(qū)域的空間,將他返回給堆內(nèi)存,所以這塊內(nèi)存區(qū)對于之后的內(nèi)存分配是有用的
docker的懸掛(dangling)文件系統(tǒng)與上面的原理類似,他是沒有被使用到的并且不會關聯(lián)任何鏡像,因此我們需要一種機制去清理這些懸空鏡像。
我們在上文已經(jīng)提到了有效的< none>鏡像,他們是一種中間層,那無效的< none>鏡像又是怎么出現(xiàn)的?這些 dangling鏡像主要是我們觸發(fā) docker build 和 docker pull命令產(chǎn)生的。
使用下面的命令可以清理
docker rmi $(docker images -f "dangling=true" -q)
PS:docker 如何刪除none鏡像
刪除none的鏡像,要先刪除鏡像中的容器。要刪除鏡像中的容器,必須先停止容器。
$ docker images
$ docker rmi $(docker images | grep "none" | awk '{print $3}')
直接刪除帶none的鏡像,直接報錯了。提示先停止容器。
$ docker stop $(docker ps -a | grep "Exited" | awk '{print $1 }')
//停止容器
$ docker rm $(docker ps -a | grep "Exited" | awk '{print $1 }')
//刪除容器
$ docker rmi $(docker images | grep "none" | awk '{print $3}')
//刪除鏡像