本篇內容介紹了“Docker 環境清理的常用方法有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
如果你使用 docker 進行大規模開發,但是沒有清理策略,那么你的磁盤馬上就會被填滿,當你真的必須因為產品火爆而要立即交付一些東西時,你就無法交付。
當我們在計算機中運行一個進程時,一旦這個進程完成,所有東西都會隨之銷毀。容器是我們現在很多人操作的基礎設施。一切東西都運行在一個容器上,旨在每個容器有一個進程。當進程完成,容器就退出。但它不會自行清理。
你需要注意這些
已經停止的容器
磁盤卷
鏡像
網絡
如果有足夠的空間,你可能不太關心磁盤空間,但是網絡也很重要。默認地,Docker 使用 bridge 網絡,它的極限是 31 個網絡。當達到極限時,你會看到下面這條消息:
could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network
如果你是一個為每個項目創建一個網絡的 docker-compose 重度用戶,就會發生這種情況。你可以通過設置一個自定義--subnet子網來解決問題,例如:
docker network create dada --subnet 192.167.11.0/24
但無論如何,本文的重點是清理。
docker rm -v $(docker ps --all --quiet --filter 'status=exited')
這會找到所有處于已退出(exited)狀態的容器,一行一個地輸出它們的 ID,以便我們可以將它提供給其它 shell 指令。
我們使用docker rm -v來刪除任何匿名卷(沒有顯式名稱的卷)。
上面的命令應該刪除與該容器關聯的卷。如果你手動創建卷,并要刪除任何未被使用的卷:
docker volume rm $(docker volume ls --quiet --filter 'dangling=true')
通常刪除所有 Docker 鏡像是安全的。我們可以在需要的時候按需獲取。通常在一個鏡像被清理后,構建時間會更長,因為 docker 守護進程需要花時間再次下載鏡像
docker rm --force $(docker images --quiet)
這里,我們使用了--force來強制刪除鏡像,即使一個容器正在使用那個鏡像。我們可以以后再獲取這個鏡像。
這很簡單。我們可以刪除任何網絡,它會在之后按需重建。
docker network rm $(docker network ls --quiet)
如果你使用 docker-compose 啟動容器,我們有一種簡單的方法來清理與特定 compose 文件關聯的資源。
docker-compose down --volumes --rmi all --remove-orphans
不幸的是,這個命令不會刪除匿名卷,因此你必須處理這些匿名卷。
docker 是短暫的,我們總是可以重新獲取鏡像,為了開發重新創建我們的數據庫,或者這只是一個持續集成系統,我們可以刪除一切。
docker system prune --all --force --volumes
“Docker 環境清理的常用方法有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。