在Apollo的使用過程當中,會出現磁盤空間不足的狀況,Apollo的官方提供的方法是刪除apollo/data/log或者刪除apollo/data/bag文件。可是即便刪除了這些,磁盤空間並無徹底恢復。這是因爲docker的一些文件佔用了很是多的磁盤空間。在這裏我提供了一些docker文件的清理辦法。對於再也不使用的對象如鏡像、容器、volumes以及網絡 Docker採起的是被動清理(類比垃圾回收)機制:除非使用docker提供的命令手動進行清理,不然它們通常是不會被清除掉。這些沒有使用的對象固然會佔用額外寶貴的空間資源。Docker爲不一樣的對象提供了各自的對象清理命令prune;另外還提供了docker system prune命令可一次性清理多個未使用對象。今天要討論的就是這些關於對象清理的命令:prune。(這些內容來源於網絡,可是我忘記了來源,因此沒有貼出網址,若是哪位做者發現是本身的原創,能夠通知我,我會把引用的出處貼出來。)javascript
命令 docker image prune 用以清理再也不使用的docker鏡像。執行docker image prune默認會清除"懸空"鏡像。什麼是「懸空」鏡像?就是既沒有標籤名也沒有容器引用的鏡像就叫"懸空"鏡像。具體操做以下:java
有時侯咱們想要清除全部沒有容器引用的鏡像,增長一個 -a 標誌就能夠搞定:docker
清除操做會提醒你是否真心想要清除對象,默認是選項會是yes;可是若是你嫌提示麻煩,能夠經過-f 或者--force標誌來進行強制清除。
更加人性化的是,Docker提供了--filter標誌篩選出想要保留的鏡像。例如:只清除超過建立時間超過24小時的鏡像能夠這樣來操做:網絡
固然還可以經過其餘的表達式來定製個人鏡像清理計劃。更多的示例參考docker image prune。ui
若是容器啓動時沒有指定--rm選項,容器中止時是不可以自動清除的。有時候咱們無所事事的敲下docker ps -a命令會驚奇的發現,天哪,竟然有這麼多容器,有運行着的也有中止了的。它們是哪裏來的?它們到底還有沒有人在關注?這種狀況在一個開發環境上尤爲常見。要知道,即便容器已經停掉了也會佔用空間資源。好吧,讓咱們用 docker container prune命令來結束這些一團糟的東西吧:spa
和鏡像清理的狀況同樣,也會有提示信息告訴你是否繼續,默認是yes;若是提示信息煩到了你的話就加上 -f 或者 --force標誌強制清除就能夠了。
默認狀況下docker container prune命令會清理掉全部處於stopped狀態的容器;若是不想那麼殘忍通通都刪掉,也可使用--filter標誌來篩選出不但願被清理掉的容器。下面是一個篩選的例子,清除掉全部停掉的容器,但24內建立的除外:對象
其餘的篩選條件的實現能夠參考:docker container prune reference, 這裏有更多的詳細的例子。ip
Volumes可被一個或多個容器使用會消耗host端的空間,但它不會自動清理,由於那樣就有可能破壞掉有用的數據。ci
和conatiner同樣,手動清理Volume時會有提示信息,增長-f 或--force標誌能夠跳過提示信息直接清理。使用過濾參數--filter來篩選出不但願清理的無用Volume,不然默認會將全部沒有使用的volumes都清理掉。下面的例子演示了除lable=keep外的volume外都清理掉(沒有引用的volume):資源
其餘的篩選條件的實現能夠參考:docker volume prune reference,這裏給出了更多參考示例。
雖然Docker networks佔用的空間很少,可是它會建立iptable 規則、虛擬網橋設備以及路由表項,有潔癖的你看到這麼多"殭屍"對象會不會抓狂?固然,咱們仍是要用清理神器:docker network prune 來清理沒有再被任何容器引用的networks:
能夠經過 -f 或者 --force標誌跳過提示信息來強制執行該命令。默認狀況會清除全部沒有再被引用的networks,若是想要過濾一些特定的networks,可使用--filter來實現。下面這個例子就是經過--filter來清理沒有被引用的、建立超過24小時的networks:
更多關於docker network的--filter的篩選條件可參考示例:docker network prune reference 。
如題,這裏要講的就是清理everything:images ,containers,networks一次性清理操做能夠經過docker system prune來搞定。在Docker 17.06.0 以及更早的版本中,這個docker system prune也會將volume一塊兒清理掉;在Docker 17.06.1以及後期的版本中則必需要手動指定--volumes標誌纔可以清理掉volumes:
在Docker 17.06.1或更高版本中添加--volumes標誌的狀況: