Docker使用Prune命令清理none鏡像
none鏡像的產(chǎn)生和困惑
我們偶爾會(huì)看到 none鏡像(虛懸鏡像),那是因?yàn)?/p>
- 構(gòu)建鏡像過程中因?yàn)槟_本錯(cuò)誤導(dǎo)致很多鏡像構(gòu)建終止,產(chǎn)生很多none標(biāo)簽的版本
- 手動(dòng)構(gòu)建鏡像的時(shí)候沒有進(jìn)行提交,遺留來的垃圾鏡像
- 這些鏡像占據(jù)較大的存儲(chǔ)空間,需要?jiǎng)h除
如下所示
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對(duì)象
Docker 采用保守的方法來清理未使用的對(duì)象(通常稱為“垃圾回收”),例如鏡像、容器、卷和網(wǎng)絡(luò):
除非明確要求 Docker 這樣做,否則通常不會(huì)刪除這些對(duì)象。這可能會(huì)導(dǎo)致 Docker 使用額外的磁盤空間。
對(duì)于每種類型的對(duì)象,Docker 都提供了一條 prune 命令。
另外,可以使用 docker system prune一次清理多種類型的對(duì)象。本主題講解如何使用這些 prune 修剪命令
修剪鏡像
清理none鏡像(虛懸鏡像)
命令: docker image prune
默認(rèn)情況下,docker image prune 命令只會(huì)清理 虛無鏡像(沒被標(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)會(huì)提示是否繼續(xù)。要繞過提示,請(qǐng)使用 -f 或 --force 標(biāo)志。
可以使用 --filter 標(biāo)志使用過濾表達(dá)式來限制修剪哪些鏡像。例如,只考慮 24 小時(shí)前創(chuàng)建的鏡像:
$ docker image prune -a --filter "until=24h"
修剪容器
停止容器后不會(huì)自動(dòng)刪除這個(gè)容器,除非在啟動(dòng)容器的時(shí)候指定了 –rm 標(biāo)志。使用 docker ps -a 命令查看 Docker 主機(jī)上包含停止的容器在內(nèi)的所有容器。你可能會(huì)對(duì)存在這么多容器感到驚訝,尤其是在開發(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)會(huì)提示是否繼續(xù)。要繞過提示,請(qǐng)使用 -f 或 --force 標(biāo)志。
默認(rèn)情況下,所有停止?fàn)顟B(tài)的容器會(huì)被刪除??梢允褂?--filter 標(biāo)志來限制范圍。例如,下面的命令只會(huì)刪除 24 小時(shí)之前創(chuàng)建的停止?fàn)顟B(tài)的容器:
修剪卷
卷可以被一個(gè)或多個(gè)容器使用,并占用 Docker 主機(jī)上的空間。卷永遠(yuǎn)不會(huì)被自動(dòng)刪除,因?yàn)檫@么做會(huì)破壞數(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ò)不會(huì)占用太多磁盤空間,但是它們會(huì)創(chuàng)建 iptables 規(guī)則,橋接網(wǎng)絡(luò)設(shè)備和路由表?xiàng)l目。要清理這些東西,可以使用 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)志才會(huì)修剪卷。
$ 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 或更高版本,同時(shí)也想修剪卷,使用 --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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
5分鐘教你實(shí)現(xiàn)用docker搭建Redis集群模式和哨兵模式
本文主要介紹了5分鐘實(shí)現(xiàn)用docker搭建Redis集群模式和哨兵模式,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09在Docker中利用Tomcat快速部署web應(yīng)用的方法示例
這篇文章我們就來說一下怎么在docker中快速部署一個(gè)web應(yīng)用。文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-01-01Ubuntu15.10安裝docker和docker-compose教程
這篇文章主要介紹了Ubuntu15.10安裝docker和docker-compose的教程,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-03-03idea連接docker實(shí)現(xiàn)一鍵部署的方法
這篇文章主要介紹了idea連接docker實(shí)現(xiàn)一鍵部署的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10docker資源控制管理Cgroup的實(shí)現(xiàn)
本文主要介紹了docker資源控制管理Cgroup的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07