前段時間遇到docker磁盤空間太少,無法寫入數據的問題。起因是因為我在本地(Mac Pro)運行了多個mysql容器,并且導入了一部分線上數據,最后還沒導入完畢就已經沒有可用空間了。
成都創新互聯是專業的銀海網站建設公司,銀海接單;提供網站設計、成都做網站,網頁設計,網站設計,建網站,PHP網站建設等專業做網站服務;采用PHP框架,可快速的進行銀海網站開發網頁制作和功能擴展;專業做搜索引擎喜愛的網站,專業的做網站團隊,希望更多企業前來合作!
我最開始給docker分配的磁盤空間是80GB,然后當出現無法寫入的時候已經是只剩余0.6GB了。
可以使用下面的命令來查看docker容器和鏡像磁盤占用情況:
docker system df可以看到類似如下的輸出,包括鏡像(Images)、容器(Containers)、數據卷(Local Volumes)、構建緩存(Build Cache):
TYPE TOTAL ACTIVE SIZE RECLAIMABLEImages 5 5 5.158GB 0B (0%)Containers 6 6 7.601MB 0B (0%)Local Volumes 4 3 46.64GB 207MB (0%)Build Cache 34 0 1.609MB 1.609MB可以看到以上4種類型里面Local Volumes占用的磁盤空間最大。如果還想查看更詳細的報告,則使用如下命令。
docker system df -v可以看到很多輸出,其中關于Local Volumes的是:
VOLUME NAME LINKS SIZE641d4976908910dca270a2bf5edf33408daf7474a0f27c850b6580b5936b6dd0 1 40.1GBovpn-data 1 33.51kB267b52c5eab8c6b8e0f0d1b02f8c68bdaffba5ea80a334a6d20e67d22759ef48 1 6.325GBf4a3866ef41e3972e087883f8fa460ad947b787f2eafb6545c759a822fb6e30d 0 207MB為了騰出空間,第一個想到的簡單粗暴的辦法是將所有停止的容器刪除,命令如下。
docker system prune -a但是使用這個命令還是要謹慎,記得把需要使用的docker容器都先啟動起來,不然那些沒有啟動的容器就會被這條命令刪除了。基于安全的考慮,這個命令默認不會刪除那些未被任何容器引用的數據卷,如果需要同時刪除這些數據卷,你需要顯式的指定 --volumns。
所以如果想強制刪除包括容器、網絡、鏡像、數據卷,可以使用如下命令。
docker system prune --all --force --volumns第二個方法是把docker存儲數據的路徑改到磁盤空間更大的其他地方。如果是Mac用戶,可以在圖形化的Docker Desktop的設置里面修改Disk image location設置。
我嘗試過第二種辦法,把Disk image location改到外接的SSD上,并且嘗試把之前的數據先同步過去。后面發現一個很大的問題,就是在mysql容器中導入數據會非常緩慢,這大概就是外接SSD在docker容器中的寫入瓶頸。
假如你只是想運行幾個容器,而不是本地存儲數據庫數據,那么將docker數據存儲到SSD是一個不錯的辦法。
到此這篇關于docker磁盤空間清理的解決辦法的文章就介紹到這了,更多相關docker磁盤空間清理內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!
分享文章:docker磁盤空間清理的解決辦法
瀏覽路徑:http://vcdvsql.cn/article28/csdjp.html
成都網站建設公司_創新互聯,為您提供網站維護、服務器托管、網站導航、品牌網站建設、云服務器、外貿網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯