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

  

posted @ 2017-03-07 13:15  こうふくに龙马  阅读(8507)  评论(0编辑  收藏  举报