Docker 是當今企業組織中最受歡迎的產品之一。它使容器中管理應用程式的過程變得非常簡單。由於 Docker 使用容器,它為應用程式提供了可移植性、效能、敏捷性、擴充性和隔離性。容器比虛擬機更具可移植性,且需要更少的資源。在使用 Docker 的過程中,您往往會累積大量未使用的映像檔、資料卷和容器。這些資源會使輸出變得雜亂並消耗大量的磁碟空間。在本教學中,您將學習如何清理 Docker 資源並整理您的伺服器。
全部清除
您可以使用單一指令清理所有 Docker 資源,包括映像檔、已停止的容器、資料卷和網路。您可以選擇以下其中一個選項:
參考:懸空資源是指那些與任何執行中的容器無關的資源。
選項 1:
|
1 |
docker system prune |
– 所有已停止的容器
– 所有未被至少一個容器使用的網路
– 所有懸空的映像檔
– 所有懸空的建置快取
選項 2:
|
1 |
docker system prune -a |
– 所有已停止的容器
– 所有未被至少一個容器使用的網路
– 所有未與至少一個容器關聯的映像檔
– 所有建置快取
選項 3:
|
1 |
docker system prune -a --volumes |
– 所有已停止的容器
– 所有未被至少一個容器使用的網路
– 所有未被至少一個容器使用的資料卷
– 所有未與至少一個容器關聯的映像檔
– 所有建置快取

移除 Docker 映像檔
要移除特定的映像檔,您需要知道其映像檔 ID。您可以使用 “docker images” 指令來尋找 Docker 容器的映像檔 ID,正如我們在關於 如何在 Ubuntu 上安裝 & 操作 Docker 的教學中所解釋的.
列出映像檔:
|
1 |
docker images |
移除映像檔:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
docker rmi <映像檔 ID> 範例: docker rmi 1d622ef86b13 輸出: Untagged: ubuntu:latest Untagged: ubuntu@sha256:747d2dbbaaee995098c9792d99bd333c6783ce56150d1b11e333bbceed5c54d7 Deleted: sha256:1d622ef86b138c7e96d4f797bf5e4baca3249f030c575b9337638594f2b63f01 Deleted: sha256:279e836b58d9996b5715e82a97b024563f2b175e86a53176846684f0717661c3 Deleted: sha256:39865913f677c50ea236b68d81560d8fefe491661ce6e668fd331b4b680b1d47 Deleted: sha256:cac81188485e011e56459f1d9fc9936625a1b62cacdb4fcd3526e5f32e280387 Deleted: sha256:7789f1a3d4e9258fbe5469a8d657deb6aba168d86967063e9b80ac3e1154333f |
移除懸空的映像檔:
當您建置 Docker 映像檔時,它通常包含多個映像檔層。懸空的映像檔是指與任何已標記的映像檔都沒有關係的層。懸空的映像檔會消耗磁碟空間,但沒有任何作用。可以使用以下指令列出它們:
|
1 |
docker images -f dangling=true |
您可以使用以下指令移除這些映像檔:
|
1 |
docker image prune |
根據特定模式移除映像檔
您可以使用 “grep” 指令輕鬆找到符合特定模式的映像檔,然後使用 “awk” 將其傳遞給 “docker rmi” 指令來移除它們。您可以使用以下指令,並將其中的 “pattern” 替換為您要尋找的模式:
列出:
|
1 |
docker images -a | grep "pattern" |
移除:
|
1 |
docker images -a | grep "pattern" | awk '{print $3}' | xargs docker rmi |
移除所有映像檔
您可以使用以下指令列出所有 Docker 映像檔:
|
1 |
docker images -a |
一旦您決定將它們全部移除,可以使用此指令將它們全部刪除:
|
1 |
docker images -a -q | xargs docker rmi |
移除容器:
既然您已經清除了所有不需要的映像檔,現在是時候刪除一些不需要的容器了。
要列出容器,您可以使用以下指令:
|
1 |
docker ps -a |
要移除容器,請使用以下指令:
|
1 |
docker rm <<容器名稱/容器ID>> |
暫時執行容器
如果您只想執行容器一次,可以選擇在容器退出時自動將其刪除。您可以使用以下指令來執行此操作:
|
1 |
docker run --rm <<映像檔名稱>> |
移除已退出的容器
您可以使用 “-f” 參數來篩選已退出的容器。使用以下指令列出已退出的容器:
|
1 |
docker ps -a -f status=exited |
篩選出來後,使用此指令將它們移除:
|
1 |
docker rm $(docker ps -a -f status=exited -q) |
根據特定模式移除容器
您可以使用 “grep” 指令輕鬆找到符合特定模式的容器,然後使用 “awk” 將其傳遞給 “docker rm” 指令來移除它們。您可以使用以下指令,並替換其中的 “pattern”。
列出:
|
1 |
docker ps -a | grep "pattern" |
移除:
|
1 |
docker ps -a | grep "pattern" | awk '{print $1}' | xargs docker rm |
停止並移除所有容器
在執行此操作之前,請先列出伺服器上的所有容器進行檢視。只有在您確定要刪除它們時,才執行以下指令:
列出容器以進行檢視:
|
1 |
docker ps -a |
停止並移除:
|
1 2 |
docker stop $(docker ps -a -q) docker rm $(docker ps -a -q) |
移除資料卷
移除特定資料卷
要移除特定的資料卷,您需要知道該資料卷的名稱。若要查詢,您可以列出所有資料卷。
列出:
|
1 |
docker volume ls |
移除:
|
1 |
docker volume rm <<資料卷名稱>> |
移除懸空資料卷
當您移除容器時,與其連結的資料卷不會自動被移除。這種資料卷被稱為懸空資料卷(dangling volume)。若要定位此類資料卷,請在指令中使用篩選參數:
|
1 |
docker volume ls -f dangling=true |
要移除所有此類懸空資料卷,請使用以下指令:
|
1 |
docker volume prune |
移除容器及其未命名資料卷
如果您在執行容器時建立了匿名或未命名的資料卷,您可以使用單一指令將其與容器一起移除。但是,如果該資料卷是有名稱的,則只會刪除容器。
|
1 |
docker rm -v <<容器名稱>> |
有了這份速查表,您現在應該已經準備好清理伺服器上不需要的 Docker 資源了。
祝您使用愉快!


留言
目前尚無留言。成為第一個留言的人吧。