docker 使您可以輕松地將應(yīng)用程序和服務(wù)包裝在容器中,以便您可以在任何地方運(yùn)行它們。然而,當(dāng)您使用 Docker 時(shí),也很容易積累過多未使用的映像、容器和數(shù)據(jù)卷,從而使輸出變得混亂并消耗磁盤空間。 Docker 為您提供了從命令行清理系統(tǒng)所需的所有工具。此備忘單式指南提供了命令的快速參考,這些命令可通過刪除未使用的 Docker 映像、容器和卷來釋放磁盤空間并保持系統(tǒng)井井
清除所有未使用或懸空的鏡像、容器、卷和網(wǎng)絡(luò)
Docker 提供了一個(gè)命令來清理所有資源 — 鏡像、容器、卷和網(wǎng)絡(luò)——懸空的(未標(biāo)記或與容器):
docker system prune
要另外刪除任何已停止的容器和所有未使用的圖像(不僅僅是懸空?qǐng)D像),請(qǐng)將 -a 標(biāo)志添加到命令:
docker system prune -a
刪除 Docker 鏡像
刪除一個(gè)或多個(gè)特定鏡像
使用帶有 -a 標(biāo)志的 docker images 命令來查找要?jiǎng)h除的映像的 ID。這將顯示 您的每個(gè)圖像,包括中間圖像層。當(dāng)你已經(jīng) 找到要?jiǎng)h除的鏡像,可以將其 ID 或標(biāo)簽傳遞給 docker rmi:
列表:
docker images -a
刪除:
docker rmiImageImage
刪除懸掛的 Docker鏡像
Docker 鏡像由多個(gè)層組成。懸掛的圖像是層 與任何標(biāo)記的圖像沒有關(guān)系。他們不再服務(wù) 目的并消耗磁盤空間。可以通過添加過濾器來定位它們 docker images 命令的標(biāo)志 -f 的值為 dangling=true 。當(dāng)您確定要?jiǎng)h除它們時(shí),可以使用 docker image prune 命令:
列表:
docker images -f dangling=true
刪除:
docker image prune
根據(jù)a刪除圖像模式
您可以使用 docker 鏡像和 grep 的組合來查找與某個(gè)模式匹配的所有鏡像。一旦您滿意,您可以使用 awk 將 ID 傳遞給 docker rmi 來刪除它們。請(qǐng)注意,這些實(shí)用程序不是由 Docker 提供的,也不一定在所有系統(tǒng)上都可用:
列表:
docker images -a | grep "pattern"
刪除:
docker images -a | grep "pattern" | awk '{print ":"}' | xargs docker rmi
刪除所有鏡像
a 上的所有 Docker 鏡像可以通過在 docker images 命令中添加 -a 來列出系統(tǒng)。一旦您確定要全部刪除它們,您可以添加 -q 標(biāo)志以將映像 ID 傳遞給 docker rmi:
List:
docker images -a
刪除:
docker rmi $(docker images -a -q)
正在刪除容器
刪除一個(gè)或多個(gè)特定容器
使用帶有 -a 標(biāo)志的 docker ps 命令來查找要?jiǎng)h除的容器的名稱或 ID刪除:
列表:
docker ps -a
刪除:
docker rm ID_or_NameID_or_Name
退出時(shí)刪除容器
如果您知道在創(chuàng)建容器時(shí)您不想保留它完成后,您可以運(yùn)行 docker run –rm 以在退出時(shí)自動(dòng)刪除它:
運(yùn)行并刪除:
docker run --rm image_name
刪除所有退出的容器
您可以使用 docker ps -a 定位容器并按狀態(tài)過濾它們:已創(chuàng)建、正在重新啟動(dòng)、正在運(yùn)行、已暫停或退出。要查看已退出容器的列表,請(qǐng)使用 -f 標(biāo)志根據(jù)狀態(tài)進(jìn)行過濾。當(dāng)您確認(rèn)要?jiǎng)h除這些容器后,請(qǐng)使用 -q 將 ID 傳遞給 docker rm 命令:
列表:
docker ps -a -f status=exited
刪除:
docker rm $(docker ps -a -f status=exited -q)
刪除使用多個(gè)容器filter
Docker 過濾器可以通過重復(fù)過濾器標(biāo)志與 附加價(jià)值。這會(huì)產(chǎn)生滿足以下任一條件的容器列表 健康)狀況。例如,如果您想刪除所有標(biāo)記為 無論是創(chuàng)建(當(dāng)您使用無效命令運(yùn)行容器時(shí)可能導(dǎo)致的狀態(tài))還是退出,您都可以使用兩個(gè)過濾器:
列表:
docker ps -a -f status=exited -f status=created
刪除:
docker rm $(docker ps -a -f status=exited -f status=created -q)
根據(jù)模式
您可以使用 docker ps 和 grep 的組合來查找與模式匹配的所有容器。當(dāng)您對(duì)要?jiǎng)h除的列表感到滿意時(shí),可以使用 awk 和 xargs 向 docker rm 提供 ID。請(qǐng)注意,這些實(shí)用程序不是由 Docker 提供的,也不一定在所有系統(tǒng)上都可用:
列表:
docker ps -a | grep "pattern”
刪除:
docker ps -a | grep "pattern" | awk '{print }' | xargs docker rm
停止并移除所有容器
您可以查看使用 docker ps 系統(tǒng)上的容器。添加 -a 標(biāo)志將顯示所有容器。當(dāng)您確定要?jiǎng)h除它們時(shí),可以添加 -q 標(biāo)志以向 docker stop 和 docker rm 命令提供 ID:
List:
docker ps -a
刪除:
docker stop $(docker ps -a -q)docker rm $(docker ps -a -q)
刪除卷
刪除一個(gè)或多個(gè)特定卷
使用 docker volume ls 命令找到要?jiǎng)h除的一個(gè)或多個(gè)卷名稱。然后,您可以使用 docker volume rm 命令刪除一個(gè)或多個(gè)卷:
列表:
docker volume ls
刪除:
docker volume rm volume_namevolume_name
刪除懸空卷
從那時(shí)起卷的存在獨(dú)立于容器, 當(dāng)刪除容器時(shí),卷不會(huì)自動(dòng)刪除 同時(shí)。當(dāng)卷存在并且不再連接到任何卷時(shí) 容器,稱為懸空卷。 ?要找到它們以確認(rèn)要?jiǎng)h除它們,可以使用 docker volume ls 帶有過濾器的命令將結(jié)果限制為懸空卷。什么時(shí)候 如果您對(duì)列表感到滿意,可以使用 docker volume prune 刪除它們:
列表:
docker volume ls -f dangling=true
刪除:
docker volume prune
移除容器及其卷
如果創(chuàng)建未命名卷,則可以使用 -v 標(biāo)志將其與容器同時(shí)刪除。請(qǐng)注意,這僅適用于未命名的 卷。當(dāng)容器被成功移除后,其ID為 顯示。請(qǐng)注意,沒有提及刪除該卷。 如果未命名,則會(huì)默默地從系統(tǒng)中刪除。如果是的話 命名后,它會(huì)默默地存在。
刪除:
docker rm -v container_name