Docker 踩坑之一:Error response from daemon: write *** : no space left on device


幾個月前aliyun推出了容器服務,趁着折騰自動化構建發布玩了一段時間Docker,一直都沒遇到什么問題。直到最近幾天,發現服務不怎么聽話,明明設置了啟動兩個容器,卻總是只出現一個,納悶了,難道我配置寫錯了?!再三檢查沒發現問題,於是使用界面操作改變容器數量為2,更新后發現還是實際只生效了一個。。。

         

好吧,莫不是我把服務器折騰壞了,呵呵~ 

連上ssh進入未啟動容器的那台的宿主機上看看吧(aliyun的容器服務購買時需選擇宿主機數量及配置,當時買的兩台宿主機使用),既然配置和界面已經沒有作用了,就使用命令啟動個服務吧。

# docker pull registry-internal.cn-hangzhou.aliyuncs.com/my-namespace/my-image:1.0.0

然后提示了個找不到鏡像 Error: image  my-namespace/my-image:1.0.0 not found 

我已經懷疑我玩的假容器服務了,我的鏡像明明在倉庫里。然后把命令copy到另一台宿主機上再次pull,結果成功,呵呵~想想估計那台訪問到的鏡像倉庫節點沒有同步成功吧 !

那我下載個別的鏡像試試,然后出現了新提示 no space left on device 。。。

看到這我第一反應就是磁盤空間不足了么?哦,可能我買的太小了,pull的鏡像又太多了,那我刪掉幾個吧,然后

# docker rmi c7253c6cdfcd
Error response from daemon: write /var/lib/docker/image/overlay/.tmp-repositories.json240511815: no space left on device

什么鬼,我刪除鏡像還不讓我刪除了?難道整個docker的命令都被我搞壞了?我試試別的命令先,stop能成功,start就又出現同樣的提示了。。

好吧,我重啟下宿主機試試,結果呵呵~

既然這樣就重置一下宿主機吧,反正我上面都是些測試容器。開開心心去找節點重置,結果意想不到。。節點消失了

估計這個no space left on device問題不解掉,就只能從ecs那里刪掉宿主機了,索性解決掉好了。

# df -h

看了下,磁盤空間只占用了一點點,不可能是磁盤用滿,排除一切可能,再加上Google看了下別人遇到這種情況的解決方法,最終將 /var/log 中的較大又無用的日志刪除(du -sh /var/log可直觀查看文件大小),再試着 docker start 其中被我停掉起不來的容器,不出意外成功了。接下來就是將不用的鏡像都順利刪掉了。

 

可通過cron定時清理不需要的鏡像,以下是刪除倉庫名包含dev_img的鏡像

0 1 * * *  docker rmi $(docker images | grep "dev_img" | awk '{print $3}') > /dev/null 2>&1

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM