Docker采用保守的方法來清理未使用的對象(通常稱為“垃圾收集”)棵逊,例如圖像,容器银酗,卷和網(wǎng)絡:除非你明確地要求Docker這樣做歹河,否則通常不會刪除這些對象。這可能導致Docker占用較多額外的磁盤空間花吟。對于每種類型的對象秸歧,Docker都提供了一個prune命令修剪一次清理多種類型的對象。本文主要說明如何使用這些prune命令衅澈。
prune 鏡像
該Docker 鏡像 prune命令允許你清理未使用的鏡像键菱。默認情況下,docker image prune僅清除dangling 鏡像。dangling images是未標記的鏡像经备,并且未被任何容器引用拭抬。要刪除dangling images:
要刪除現(xiàn)有容器未使用的所有鏡像,請使用-a標志:
$ docker image prune -a
WARNING! This will remove all images without at least one container associated to them. Are you sure you want to continue? [y/N] y
默認情況下侵蒙,系統(tǒng)會提示您繼續(xù)造虎。要繞過提示,請使用-f或--force標志強制刪除
您可以使用帶有--filter標志的過濾(表達式)限制修剪(刪除)哪些鏡像纷闺。例如算凿,要僅考慮超過24小時前創(chuàng)建的鏡像:
$ docker image prune -a --filter"until = 24h"
其他過濾表達式可用。有關更多示例犁功,請參閱docker image prune 參考氓轰。
prune 容器
停止容器時,除非使用--rm標志啟動容器浸卦,否則不會自動刪除容器署鸡。要查看Docker主機上的所有容器(包括已停止的容器),請使用docker ps -a限嫌。您可能會驚訝地發(fā)現(xiàn)存在多少個容器靴庆,尤其是在開發(fā)系統(tǒng)上!停止的容器的可寫層仍然占用(占據(jù))磁盤空間怒医。要清除它撒穷,可以使用docker container prune命令。
$ docker container prune
WARNING! This will remove all stopped containers. Are you sure you want to continue? [y/N] y
默認情況下裆熙,系統(tǒng)會提示您繼續(xù)。要繞過提示禽笑,請使用-f或--force標志入录。
默認情況下,將刪除所有已停止的容器佳镜。您可以使用--filter標志限制范圍僚稿。例如,以下命令僅刪除超過24小時的已停止容器:
$ docker container prune --filter"until = 24h"
其他過濾表達式可用蟀伸。有關更多示例蚀同,請參閱docker container prune 參考。
prune 數(shù)據(jù)卷
卷可以由一個或多個容器使用啊掏,占用Docker主機上的空間蠢络。卷永遠不會自動刪除,因為這樣做可以破壞數(shù)據(jù)迟蜜。
$ docker volume prune
WARNING! This will remove all volumes not used by at least one container. Are you sure you want to continue? [y/N] y
默認情況下刹孔,將刪除所有未使用的卷。您可以使用--filter標志限制范圍娜睛。例如髓霞,以下命令僅刪除未使用保留標簽標記的卷(下面的命令只刪除未標記為保留標簽的卷):
$ docker volume prune --filter"label卦睹!= keep"
其他過濾表達式可用。有關更多示例方库,請參閱docker volume prune 參考结序。
prune 網(wǎng)絡
Docker網(wǎng)絡不占用太多磁盤空間,但它們確實創(chuàng)建了iptables規(guī)則纵潦,橋接網(wǎng)絡設備和路由表條目徐鹤。要清理這些內(nèi)容,您可以使用docker network prune來清理任何容器未使用的網(wǎng)絡酪穿。
$ docker network prune
WARNING! This will remove all networks not used by at least one container. Are you sure you want to continue? [y/N] y
默認情況下凳干,系統(tǒng)會提示您繼續(xù)。要繞過提示被济,請使用-f或--force標志救赐。
默認情況下,將刪除所有未使用的網(wǎng)絡只磷。您可以使用--filter標志限制范圍经磅。例如,以下命令僅刪除超過24小時的網(wǎng)絡:
prune 一切
docker system prune命令是修剪鏡像钮追,容器预厌,和網(wǎng)絡的快捷方式。在Docker 17.06.0及更早版本中元媚,卷也被修剪轧叽。在Docker 17.06.1及更高版本中,必須為docker system prune指定修剪卷的--volumes標志刊棕。
$ 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 17.06.1或更高版本炭晒,并且還希望修剪卷,請?zhí)砑?-volumes標志:
$ docker system prune --volumes
WARNING! This will remove: - all stopped containers - all networks not used by at least one container - all volumes not used by at least one container - all dangling images - all build cache Are you sure you want to continue? [y/N] y