一、虛懸鏡像(none鏡像)如何產(chǎn)生
1、 構(gòu)建鏡像過(guò)程中因?yàn)槟_本錯(cuò)誤導(dǎo)致很多鏡像構(gòu)建終止币绩,產(chǎn)生很多none標(biāo)簽的鏡像
2、 手動(dòng)構(gòu)建鏡像的時(shí)候沒(méi)有進(jìn)行提交府阀,遺留下來(lái)的垃圾鏡像
詳細(xì)了解虛懸鏡像的產(chǎn)生可以查看 docker層和虛懸鏡像
由于這些虛懸鏡像也占用了大量的存儲(chǔ)空間缆镣,所以需要?jiǎng)h除,docker采用保守的方式來(lái)清理未使用的對(duì)象(鏡像试浙、容器董瞻、卷、網(wǎng)絡(luò))田巴,除非明確的要求钠糊,通常情況下docker不會(huì)刪除這些垃圾對(duì)象挟秤。
對(duì)于每一種對(duì)象,docker都提供了
prune
命令進(jìn)行修剪清理眠蚂。
二、如何清理垃圾對(duì)象
1斗躏、 查看虛懸鏡像
# 查看虛懸鏡像逝慧,-f :表示過(guò)濾 dangling:表示虛懸鏡像
docker images -f dangling=true
2、 清理虛懸鏡像
# 1啄糙、使用添加過(guò)濾清除
docker rmi $(docker images -q -f dangling=true)
# 2笛臣、使用prune修剪清除
docker image prune
3、 清理無(wú)容器使用的鏡像
docker image prune -a
默認(rèn)情況下隧饼,系統(tǒng)會(huì)提示是否繼續(xù)沈堡。要繞過(guò)提示,請(qǐng)使用 -f
或 --force
標(biāo)志燕雁。
可以使用 --filter
標(biāo)志使用過(guò)濾表達(dá)式來(lái)限制修剪哪些鏡像诞丽。例如,只考慮 24 小時(shí)前創(chuàng)建的鏡像:
docker image prune -a --filter "until=24h"
4拐格、 清理所有停止的容器
docker container prune
5僧免、 清理所有沒(méi)有被容器使用的卷
docker volume prune
卷可以被一個(gè)或多個(gè)容器使用,并占用 Docker
主機(jī)上的空間捏浊。卷永遠(yuǎn)不會(huì)被自動(dòng)刪除懂衩,因?yàn)檫@么做會(huì)破壞數(shù)據(jù)。
6金踪、 清理所有沒(méi)有被容器使用的網(wǎng)絡(luò)
docker network prune
Docker
網(wǎng)絡(luò)不會(huì)占用太多磁盤空間浊洞,但是它們會(huì)創(chuàng)建 iptables
規(guī)則,橋接網(wǎng)絡(luò)設(shè)備和路由表?xiàng)l目胡岔。要清理這些東西法希,可以使用 docker network prune
來(lái)清理沒(méi)有被容器未使用的網(wǎng)絡(luò)。
7靶瘸、 清理所有虛懸鏡像铁材,沒(méi)有使用的容器、網(wǎng)絡(luò)
$ docker system prune
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all dangling images
- all build cache
Are you sure you want to continue? [y/N] y
docker system prune
命令是修剪鏡像奕锌、容器和網(wǎng)絡(luò)的快捷方式著觉。在 Docker 17.06.0 及以前版本中,還好修剪卷惊暴。在 Docker 17.06.1 及更高版本中必須為 docker system prune
命令明確指定 --volumes
標(biāo)志才會(huì)修剪卷饼丘。