Docker使用Prune命令清理none鏡像
none鏡像的產生和困惑
我們偶爾會看到 none鏡像(虛懸鏡像),那是因為
- 構建鏡像過程中因為腳本錯誤導致很多鏡像構建終止,產生很多none標簽的版本
- 手動構建鏡像的時候沒有進行提交,遺留來的垃圾鏡像
- 這些鏡像占據較大的存儲空間,需要刪除
如下所示
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 采用保守的方法來清理未使用的對象(通常稱為“垃圾回收”),例如鏡像、容器、卷和網絡:
除非明確要求 Docker 這樣做,否則通常不會刪除這些對象。這可能會導致 Docker 使用額外的磁盤空間。
對於每種類型的對象,Docker 都提供瞭一條 prune 命令。
另外,可以使用 docker system prune一次清理多種類型的對象。本主題講解如何使用這些 prune 修剪命令
修剪鏡像
清理none鏡像(虛懸鏡像)
命令: docker image prune
默認情況下,docker image prune 命令隻會清理 虛無鏡像(沒被標記且沒被其它任何鏡像引用的鏡像)
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
默認情況下,系統會提示是否繼續。要繞過提示,請使用 -f 或 –force 標志。
可以使用 –filter 標志使用過濾表達式來限制修剪哪些鏡像。例如,隻考慮 24 小時前創建的鏡像:
$ docker image prune -a --filter "until=24h"
修剪容器
停止容器後不會自動刪除這個容器,除非在啟動容器的時候指定瞭 –rm 標志。使用 docker ps -a 命令查看 Docker 主機上包含停止的容器在內的所有容器。你可能會對存在這麼多容器感到驚訝,尤其是在開發環境。停止狀態的容器的可寫層仍然占用磁盤空間。要清理掉這些,可以使用 docker container prune 命令:
$ docker container prune WARNING! This will remove all stopped containers. Are you sure you want to continue? [y/N] y
默認情況下,系統會提示是否繼續。要繞過提示,請使用 -f 或 –force 標志。
默認情況下,所有停止狀態的容器會被刪除。可以使用 –filter 標志來限制范圍。例如,下面的命令隻會刪除 24 小時之前創建的停止狀態的容器:
修剪卷
卷可以被一個或多個容器使用,並占用 Docker 主機上的空間。卷永遠不會被自動刪除,因為這麼做會破壞數據。
$ 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
修剪網絡
Docker 網絡不會占用太多磁盤空間,但是它們會創建 iptables 規則,橋接網絡設備和路由表條目。要清理這些東西,可以使用 docker network prune 來清理沒有被容器未使用的網絡。
$ docker network prune
修剪一切
docker system prune 命令是修剪鏡像、容器和網絡的快捷方式。在 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 或更高版本,同時也想修剪卷,使用 –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
到此這篇關於Docker使用Prune命令清理none鏡像的文章就介紹到這瞭,更多相關Docker 清理none鏡像 內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- docker volume刪除卷的操作
- docker prune命令可定時清理不常用數據的實現
- docker system命令集合的使用
- 如何恢復docker容器數據
- Docker 清理的常用方法及問題