docker build 时出现no space left on device解决方法

今天我在docker build的时候遇到了一个特别奇怪的错误 no space left on device。

看到这个错误的第一反应就是应该是存储空间不够了。于是我查看了一下内存使用情况。

执行命令:

df -h

结果发现我的内存空间已经被占用了99%,把我吓了一跳呀,因为我感觉自己根本没有存多大的文件呀。

在搜寻了诸多文章之后,我终于找到了解决办法,也知道了自己会出现这样的问题的原因。接下来分享给大家。

执行命令,查看docker占用空间的情况。

docker system df

从图中可以看到,docker存储卷就占用了10个G的空间,怪不得会报那样的错误,空间确实不够用啊。

而出现这种情况的原因:是因为我之前使用过好几次-v选项,从容器挂载卷到本地目录。

如果创建容器时从容器挂载了volume,在/var/lib/docker/volumes下会生成与volume对应的目录,使用docker rm删除容器并不会删除与volume对应的目录,这些目录会占据不必要的存储空间,即使可以手动删除,因为有些随机生成的目录名称时无意义的随机字符串,要知道他们是否与未被删除的容器对应也十分麻烦,所以在删除容器的时候需要对容器的volume妥善处理,在删除容器时一并是拿出volume有以下三种办法:

       1.使用docker volume rm <volume_name> 删除volume。

       2.使用docker rm -v <container_name>删除容器。

       3.在运行容器时使用docker run --rm, --rm标签会在容器通知运行的时候删除容器以及容器所挂载的volume。

为了解决上面出现的问题,我们只需要执行一个语句即可解决:

docker volume rm $(docker volume ls -qf dangling=true)

此时我们再看空间占用率就会小很多了:

问题成功解决!!!

原创:https://blog.csdn.net/qq_37050372/article/details/100044143

posted @ 2020-12-24 10:16  技术白菜  阅读(678)  评论(0)    收藏  举报