清理Docker 鏡像、容器和卷

清除所有未使用的鏡像、容器、卷和網(wǎng)絡(luò)

Docker 提供了一個(gè)命令來(lái)清理的資源——images, containers, volumes, and networks:

$ docker system prune

要額外刪除任何已停止的容器和所有未使用的images,添加-a參數(shù)到命令中:

$ docker system prune -a

刪除Docker Image

使用docker images 加上-a參數(shù)來(lái)定位要?jiǎng)h除的Image的ID。 之后將ID傳遞給docker rmi:

List:

docker images -a

Remove:

docker rmi <ImageID> <ImageID>

刪除 dangling images

當(dāng)build docker 鏡像的時(shí)候,有時(shí)會(huì)遇到用一個(gè)甚至多個(gè)中間層鏡像,這會(huì)一定程度上減少最終打包出來(lái) docker 鏡像的大小,但是會(huì)產(chǎn)生一些tag 為 none 的無(wú)用鏡像,也稱(chēng)為懸掛鏡像 (dangling images)

列出所有的 dangling images:

docker images -f "dangling=true"

刪除所有的 dangling images:

docker rmi $(docker images -f "dangling=true" -q)

刪除所有Image

使用docker images添加-a可以列出系統(tǒng)上所有的docker鏡像, 如果確定要將他們?nèi)縿h除, 可以使用-q參數(shù)將ImageID傳給docker rmi

List:

docker images -a

Remove:

docker rmi $(docker images -a -q)

刪除Container

使用docker ps帶有-a標(biāo)志的命令來(lái)定位要?jiǎng)h除的容器的名稱(chēng)或 ID:

List:

docker ps -a

Remove:

docker rm <ID_or_Name> <ID_or_Name>

退出時(shí)移除容器

如果要臨時(shí)創(chuàng)建一個(gè)容器, 并且運(yùn)行完成后不再保留,可以運(yùn)行docker run --rm

Run And Remove:

docker run --rm image_name

移除所有exited容器

您可以使用容器定位docker ps -a并按其狀態(tài)過(guò)濾它們:已創(chuàng)建、正在重新啟動(dòng)、正在運(yùn)行、已暫?;蛞淹顺觥R榭匆淹顺鋈萜鞯牧斜?,請(qǐng)使用該-f標(biāo)志根據(jù)狀態(tài)進(jìn)行過(guò)濾。當(dāng)您確認(rèn)要?jiǎng)h除這些容器時(shí),使用-q將 ID 傳遞給docker rm命令。

List:

docker ps -a -f status=exited

Remove:

docker rm $(docker ps -a -f status=exited -q)

使用多個(gè)過(guò)濾器刪除容器

Docker 過(guò)濾器可以通過(guò)使用附加值重復(fù)過(guò)濾器標(biāo)志來(lái)組合。這將生成滿足任一條件的容器列表。例如,如果您想刪除所有標(biāo)記為Created(使用無(wú)效命令運(yùn)行容器時(shí)可能導(dǎo)致的狀態(tài))或Exited的容器,您可以使用兩個(gè)過(guò)濾器:

List:

docker ps -a -f status=exited -f status=created

Remove:

docker rm $(docker ps -a -f status=exited -f status=created -q)

停止并刪除所有容器

使用docker ps 查看系統(tǒng)上所有運(yùn)行的容器, 添加-a參數(shù)顯示系統(tǒng)上所有容器(包括exited狀態(tài)的容器)。 添加-q參數(shù)后將ID傳給docker stopdocker rm停止不刪除所有容器

List:

docker ps -a

Remove:

docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)

刪除一個(gè)或多個(gè)特定卷 - Docker 1.9 及更高版本

使用該docker volume ls命令定位要?jiǎng)h除的卷名或名稱(chēng)。然后您可以使用以下docker volume rm命令刪除一個(gè)或多個(gè)卷:

List:

docker volume ls

Remove:

docker volume rm volume_name volume_name

刪除dangling卷 - Docker 1.9 及更高版本

由于卷的點(diǎn)是獨(dú)立于容器而存在的,所以當(dāng)一個(gè)容器被移除時(shí),不會(huì)同時(shí)自動(dòng)移除一個(gè)卷。當(dāng)卷存在并且不再連接到任何容器時(shí),它被稱(chēng)為懸垂卷。要找到它們以確認(rèn)您要?jiǎng)h除它們,您可以使用docker volume ls帶有過(guò)濾器的命令將結(jié)果限制為懸空體積。當(dāng)您對(duì)列表感到滿意時(shí),您可以使用以下命令將它們?nèi)縿h除docker volume prune

List:

docker volume ls -f dangling=true

Remove:

docker volume prune
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容