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