Docker使用Prune命令清理none鏡像
none鏡像的產(chǎn)生和困惑
我們偶爾會看到 none鏡像(虛懸鏡像),那是因為
- 構(gòu)建鏡像過程中因為腳本錯誤導(dǎo)致很多鏡像構(gòu)建終止,產(chǎn)生很多none標(biāo)簽的版本
- 手動構(gòu)建鏡像的時候沒有進行提交,遺留來的垃圾鏡像
- 這些鏡像占據(jù)較大的存儲空間,需要刪除
如下所示
root@instance-o70no2nw:~# docker images -a REPOSITORY TAG IMAGE ID CREATED SIZE <none> <none> 867c2dc0031b 12 hours ago 465MB mytomcat 8.5.0 34c8c864d046 12 hours ago 465MB ubuntu 16.04 a3551444fc85 2 days ago 119MB mysql 8.0.16 d72169616e20 4 days ago 443MB mysql latest d72169616e20 4 days ago 443MB tomcat latest 5a069ba3df4d 2 weeks ago 465MB
如何清理none對象
Docker 采用保守的方法來清理未使用的對象(通常稱為“垃圾回收”),例如鏡像、容器、卷和網(wǎng)絡(luò):
除非明確要求 Docker 這樣做,否則通常不會刪除這些對象。這可能會導(dǎo)致 Docker 使用額外的磁盤空間。
對于每種類型的對象,Docker 都提供了一條 prune 命令。
另外,可以使用 docker system prune一次清理多種類型的對象。本主題講解如何使用這些 prune 修剪命令
修剪鏡像
清理none鏡像(虛懸鏡像)
命令: docker image prune
默認(rèn)情況下,docker image prune 命令只會清理 虛無鏡像(沒被標(biāo)記且沒被其它任何鏡像引用的鏡像)
root@instance-o70no2nw:~# docker image prune WARNING! This will remove all dangling images. Are you sure you want to continue? [y/N] y Total reclaimed space: 0B
清理無容器使用的鏡像
命令: docker image prune -a
默認(rèn)情況下,系統(tǒng)會提示是否繼續(xù)。要繞過提示,請使用 -f 或 --force 標(biāo)志。
可以使用 --filter 標(biāo)志使用過濾表達式來限制修剪哪些鏡像。例如,只考慮 24 小時前創(chuàng)建的鏡像:
$ docker image prune -a --filter "until=24h"
修剪容器
停止容器后不會自動刪除這個容器,除非在啟動容器的時候指定了 –rm 標(biāo)志。使用 docker ps -a 命令查看 Docker 主機上包含停止的容器在內(nèi)的所有容器。你可能會對存在這么多容器感到驚訝,尤其是在開發(fā)環(huán)境。停止?fàn)顟B(tài)的容器的可寫層仍然占用磁盤空間。要清理掉這些,可以使用 docker container prune 命令:
$ docker container prune WARNING! This will remove all stopped containers. Are you sure you want to continue? [y/N] y
默認(rèn)情況下,系統(tǒng)會提示是否繼續(xù)。要繞過提示,請使用 -f 或 --force 標(biāo)志。
默認(rèn)情況下,所有停止?fàn)顟B(tài)的容器會被刪除。可以使用 --filter 標(biāo)志來限制范圍。例如,下面的命令只會刪除 24 小時之前創(chuàng)建的停止?fàn)顟B(tài)的容器:
修剪卷
卷可以被一個或多個容器使用,并占用 Docker 主機上的空間。卷永遠(yuǎn)不會被自動刪除,因為這么做會破壞數(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
修剪網(wǎng)絡(luò)
Docker 網(wǎng)絡(luò)不會占用太多磁盤空間,但是它們會創(chuàng)建 iptables 規(guī)則,橋接網(wǎng)絡(luò)設(shè)備和路由表條目。要清理這些東西,可以使用 docker network prune 來清理沒有被容器未使用的網(wǎng)絡(luò)。
$ docker network prune
修剪一切
docker system prune 命令是修剪鏡像、容器和網(wǎng)絡(luò)的快捷方式。在 Docker 17.06.0 及以前版本中,還好修剪卷。在 Docker 17.06.1 及更高版本中必須為 docker system prune 命令明確指定 --volumes 標(biāo)志才會修剪卷。
$ 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 或更高版本,同時也想修剪卷,使用 --volumes 標(biāo)志。
$ 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
到此這篇關(guān)于Docker使用Prune命令清理none鏡像的文章就介紹到這了,更多相關(guān)Docker 清理none鏡像 內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。