如何修复 Docker 中的 运行 out of disk space 错误?

How to fix the running out of disk space error in Docker?

当我尝试构建 docker 图像时,我遇到了磁盘不足 space 错误,在调查之后我发现以下内容:

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        4G   3.8G     0 100% /

如何解决 space 错误?

docker system prune

https://docs.docker.com/engine/reference/commandline/system_prune/

这将清理所有未使用的图像、容器、网络和卷。我们通常会在创建新图像时尝试清理旧图像,但您也可以将此 运行 作为每天在 docker 服务器上的计划任务。

对我来说没有任何用处。我在 Docker 设置中更改了磁盘映像的最大大小,然后它释放了巨大的大小。

使用命令 - docker system prune -a 这将清除图像、网络和卷的总可回收大小......这将删除所有与可回收 space 相关的图像,这些图像与任何 运行ning 容器无关......

运行 docker system df查看可回收内存的命令

如果有一些可回收内存,那么如果上面的命令首先不起作用,那么 运行 相同的命令两次然后它应该清理.... 我几乎每天都在经历这种行为...... 计划向 Docker 社区报告此错误,但在此之前想在新版本中重现此错误,以查看最新版本是否已修复此错误....

因为我找不到答案,所以我打算把它留在这里。

转到 Docker GUI -> 首选项 -> 重置 -> 卸载

完全卸载Docker。

然后使用 this link

重新安装

我的 docker 在构建映像时使用了 20GB 的 space,全新安装后,它最多使用 3-4GB。绝对有帮助!

此外,如果您使用 mac 书籍,请查看 ~/Library/Containers/docker*

这个文件夹对我来说是 60 GB,正在吃掉我 mac 上的所有 space!尽管这可能与问题无关,但我认为将其留在这里对我来说至关重要。

如果您正在使用 linux,那么很可能 docker 正在填满目录 /var/lib/docker/containers,因为它正在将容器日志写入该目录下的 <CONTAINER_ID>-json.log 文件.您可以使用命令 cat /dev/null > <CONTAINER_ID>-json.log 清除此文件,或者您可以设置正在编辑的最大日志文件大小 /etc/sysconfig/docker。可以在 RedHat documentation 中找到更多信息。就我而言,我创建了一个 crontab 来每天午夜清除文件的内容。希望这对您有所帮助!

注意:

  1. 您可以使用以下命令找到 ID 为 的 docker 个容器 sudo docker ps --no-trunc
  2. 您可以使用命令查看文件大小 du -sh $(docker inspect --format='{{.LogPath}}' CONTAINER_ID_FOUND_IN_LAST_STEP)

打开 docker 设置 -> 资源 -> 高级并增加磁盘映像大小下可以使用的硬盘数量 space。