問題
在docker使用用過程中出現,出現如下錯誤提示:
ERROR: Service 'XXX' failed to build: write /var/lib/docker/tmp/GetImageBlob239544438: no space left on device
原因
錯誤提示已經很明顯了,就是現在docker存儲路徑所在分區存儲空間不足,一般都是默認路徑/var/lib/dokcer,當然,這個原因引起的問題可能會有很多種,之前也也做到過,所以當docker忽然出現問題的時候,記得df -h
看一下空閒的空間大小。
解決方案
此方案針對的系統環境和版本分別是:Contos 7
和Dokcer 17.03.2-ce
,其他環境下並不一定有效。
-
關掉所有正在運行的容器
docker stop $(docker ps -q -f status=running)
-
關閉docker服務
systemctl stop docker
-
將Docker
現目錄
挪到一個新目錄
下,這兩個目錄依照具體情況而定,我的分別是/var/lib/docker
和/home/docker
mv /var/lib/docker /home/docker
-
將原來的數據備份一份,備份大法好,萬一不行還不至於損壞數據
tar zcf docker_file_bak.tar.gz /home/docker
-
修改服務啓動命令,服務的service文件爲
/lib/systemd/system/docker.service
,將裏面的內容ExecStart=/usr/bin/dockerd
修改爲如下:ExecStart=/usr/bin/dockerd -g 新目錄
-
重新加載修改後的service文件
systemctl daemon-reload
-
啓動Docker服務
systemctl start docker
-
驗證修改成功
docker info | grep "Docker Root Dir"
可以看到結果已經是新的目錄
再次說明,該方案只在前面提到的環境下測試過,並不是所有的環境都試用,因爲之前在ubuntu 14.04和ubuntu 16.04上嘗試使用該方法都不能生效,後續再進行說明。