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