Docker 清理的常用方法及問(wèn)題
如果你使用 docker 進(jìn)行大規(guī)模開(kāi)發(fā),但是沒(méi)有清理策略,那么你的磁盤(pán)馬上就會(huì)被填滿(mǎn),當(dāng)你真的必須因?yàn)楫a(chǎn)品火爆而要立即交付一些東西時(shí),你就無(wú)法交付。
當(dāng)我們?cè)谟?jì)算機(jī)中運(yùn)行一個(gè)進(jìn)程時(shí),一旦這個(gè)進(jìn)程完成,所有東西都會(huì)隨之銷(xiāo)毀。容器是我們現(xiàn)在很多人操作的基礎(chǔ)設(shè)施。一切東西都運(yùn)行在一個(gè)容器上,旨在每個(gè)容器有一個(gè)進(jìn)程。當(dāng)進(jìn)程完成,容器就退出。但它不會(huì)自行清理。
Docker 積累的東西
你需要注意這些
如果有足夠的空間,你可能不太關(guān)心磁盤(pán)空間,但是網(wǎng)絡(luò)也很重要。默認(rèn)地,Docker 使用 bridge 網(wǎng)絡(luò),它的極限是 31 個(gè)網(wǎng)絡(luò)。當(dāng)達(dá)到極限時(shí),你會(huì)看到下面這條消息:
could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network
如果你是一個(gè)為每個(gè)項(xiàng)目創(chuàng)建一個(gè)網(wǎng)絡(luò)的 docker-compose 重度用戶(hù),就會(huì)發(fā)生這種情況。你可以通過(guò)設(shè)置一個(gè)自定義 --subnet 子網(wǎng)來(lái)解決問(wèn)題,例如:
docker network create dada --subnet 192.167.11.0/24
但無(wú)論如何,本文的重點(diǎn)是清理。
使用 docker 清理
清理已經(jīng)停止的容器
docker rm -v $(docker ps --all --quiet --filter 'status=exited')
這會(huì)找到所有處于已退出(exited)狀態(tài)的容器,一行一個(gè)地輸出它們的 ID,以便我們可以將它提供給其它 shell 指令。
我們使用 docker rm -v 來(lái)刪除任何匿名卷(沒(méi)有顯式名稱(chēng)的卷)。
清理磁盤(pán)卷
上面的命令應(yīng)該刪除與該容器關(guān)聯(lián)的卷。如果你手動(dòng)創(chuàng)建卷,并要?jiǎng)h除任何未被使用的卷:
docker volume rm $(docker volume ls --quiet --filter 'dangling=true')
清理鏡像
通常刪除所有 Docker 鏡像是安全的。我們可以在需要的時(shí)候按需獲取。通常在一個(gè)鏡像被清理后,構(gòu)建時(shí)間會(huì)更長(zhǎng),因?yàn)?docker 守護(hù)進(jìn)程需要花時(shí)間再次下載鏡像
docker rm --force $(docker images --quiet)
這里,我們使用了 --force 來(lái)強(qiáng)制刪除鏡像,即使一個(gè)容器正在使用那個(gè)鏡像。我們可以以后再獲取這個(gè)鏡像。
清理網(wǎng)絡(luò)
這很簡(jiǎn)單。我們可以刪除任何網(wǎng)絡(luò),它會(huì)在之后按需重建。
docker network rm $(docker network ls --quiet)
使用 docker-compose 清理
如果你使用 docker-compose 啟動(dòng)容器,我們有一種簡(jiǎn)單的方法來(lái)清理與特定 compose 文件關(guān)聯(lián)的資源。
docker-compose down --volumes --rmi all --remove-orphans
不幸的是,這個(gè)命令不會(huì)刪除匿名卷,因此你必須處理這些匿名卷。
一條命令解決所有問(wèn)題
docker 是短暫的,我們總是可以重新獲取鏡像,為了開(kāi)發(fā)重新創(chuàng)建我們的數(shù)據(jù)庫(kù),或者這只是一個(gè)持續(xù)集成系統(tǒng),我們可以刪除一切。
docker system prune --all --force --volumes
到此這篇關(guān)于Docker 清理的常用方法及問(wèn)題的文章就介紹到這了,更多相關(guān)Docker 清理內(nèi)容請(qǐng)搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信