如何刪除 Docker 映像、容器和卷

docker 使您可以輕松地將應(yīng)用程序和服務(wù)包裝在容器中,以便您可以在任何地方運(yùn)行它們。然而,當(dāng)您使用 Docker 時(shí),也很容易積累過多未使用的映像、容器和數(shù)據(jù)卷,從而使輸出變得混亂并消耗磁盤空間。 Docker 為您提供了從命令行清理系統(tǒng)所需的所有工具。此備忘單式指南提供了命令的快速參考,這些命令可通過刪除未使用的 Docker 映像、容器和卷來釋放磁盤空間并保持系統(tǒng)井井

如何刪除 Docker 映像、容器和卷

清除所有未使用或懸空的鏡像、容器、卷和網(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

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊14 分享