如何重新初始化Docker层?

时间:2020-09-03 11:15:04

标签: docker

使用Kubuntu 18下的docker,我没有设备上的可用空间。 我运行命令来清除空间:

docker stop $(docker ps -a -q)

docker rm $(docker ps -a -q)
docker-compose down --remove-orphans
docker system prune --force --volumes

当我仍然没有可用空间时,打开/ var / lib / docker / overlay2 /目录,然后 删除了很多子目录。

那之后我得到了错误:

$ docker-compose up -d --build
Creating network "master_default" with the default driver
ERROR: stat /var/lib/docker/overlay2/36af81b800ebb595a24b6c724318c1126932d2bfae61e2c98bfc65a203b2b928: no such file or directory
  1. 看起来这不是释放空间的好方法。对我来说哪种方法好?
  2. 是否可以重新初始化我的docker应用?

谢谢!

2 个答案:

答案 0 :(得分:2)

在我仍然没有可用空间的情况下,打开了/var/lib/docker/overlay2/目录,并删除了其中的许多子目录。

这时,docker文件系统已损坏。要修复,最好的办法是备份要保存的所有内容,尤其是任何卷,停止docker引擎(systemctl stop docker),删除整个docker文件系统(rm -rf /var/lib/docker),然后重新启动docker({ {1}}。

到那时,引擎将完全空了,没有任何图像,容器等。您将需要拉/重建图像并重新创建您正在运行的容器。希望这就像systemctl start docker一样简单。

答案 1 :(得分:1)

/var/lib/docker/overlay2/是docker存储图像层的地方。

现在,docker system prune -a会删除所有未使用的图像,已停止的容器和构建缓存(如果我没记错的话)。

一个建议,由于您正在构建映像,请检查docker buildkit。我知道docker-compose增加了对此的支持,但是我不知道您的版本是否支持该功能。简而言之,构建图像会更快。