清除所有未使用的鏡像穆壕、容器、卷和網(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)行均唉、已暫褪浅浚或已退出。要查看已退出容器的列表舔箭,請(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)組合箫章。這將生成滿(mǎn)足任一條件的容器列表。例如镜会,如果您想刪除所有標(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ì)列表感到滿(mǎn)意時(shí)色瘩,您可以使用以下命令將它們?nèi)縿h除docker volume prune
:
List:
docker volume ls -f dangling=true
Remove:
docker volume prune