误删docker目录/var/lib/docker/overlay2,导致容器build失败

  • Post author:
  • Post category:其他




背景:

服务器磁盘满了,查看本地docker目录下占用太多,需要清除下不用的文件腾出资源,删除了/var/lib/docker/overlay2 下的文件,导致重新启动容器失败,启动新容器例如hello-world也失败

在这里插入图片描述

关于被删掉的overlay2存储详细说明可以参考


https://www.lagou.com/lgeduarticle/70618.html



解决办法:


重启docker


systemctl restart docker

然后启动一个容器试试

在这里插入图片描述

如果问题不能完美解决

ps: 如果不重启docker 还是会同样报错

ps:也可以将docker系统目录/var/lib/docker/下的overlay2文件夹,整个删掉,再重启docker后,会自动创建出新的overlay2文件夹目录,里边存放所必须的文件。这个时候重新run容器就会成功



如何清理docker磁盘占用

docker system df # 可查看 Docker 所占用的空间:

在这里插入图片描述

其中 Images 表示镜像,Containers 表示容器,Local Volumes 表示本地卷,Build Cache 表示构建缓存。


整体清理


可以通过 docker system prune 进行一次空间清理:

WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all dangling images
  - all dangling build cache

Are you sure you want to continue? [y/N]

该操作会删除所有停止的容器,所有未被至少一个容器使用的网络,所有的 dangling 镜像(在构建镜像时产生的 tag 为 none 的镜像,没有和任何其他有 tag 的镜像有关联),所有的 dangling 构建缓存(和 dangling 镜像同理)。

更激进一点,还可以执行 docker system prune -a,该操作还会删除没有和运行中的容器有关联的镜像。

docker system prune -a #

在这里插入图片描述

我们看到目录下被清空了

在这里插入图片描述

镜像清理:

docker rm <image_name> [-f]

容器清理:

docker container rm <containerid_or_name>

网络清理:

docker network ls

docker network rm <net_work_name>

数据卷清理:

docker volume ls

docker system prune -a –volumes 是在 docker system prune -a的基础上删除所有未使用的卷。



版权声明:本文为m0_51971452原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。