docker-in-docker 使用内存还是磁盘?

Does docker-in-docker use memory or disk?

我正在尝试在 docker 中构建一个 docker 图像(docker-in-docker,dind)。图像非常大,构建失败并出现错误 no space left on device

设置: 我在 teamcity 代理 docker 图像上 运行 这个,具有 docker-in-docker 配置

我的主机是否需要更多内存或更多磁盘space? docker-in-docker 是在内存中构建还是在磁盘上构建?

它使用磁盘。

关于 docker-in-docker 的工作原理和原因的详尽解释在 article.

我最初问这个问题时考虑的是 Teamcity 的代理,但我想概括一下这个问题。似乎它实际上从未成为行业标准 运行 docker-in-docker 因为它会导致数据损坏,并且大多数用例可以通过 docker- 解决to-docker 解决方案(解释如下)。尽管如此,近docker-in-docker实现在一些CI文档中仍然被称为docker-in-docker,即使它不是真正的 docker-in-docker 解决方案。

docker-to-docker 解决方法通常是将主机 docker 守护程序暴露给卷装载中的容器,即 docker run -v /var/run/docker.sock:/var/run/docker.sock ... 如果您将守护进程暴露给一个容器,或者将 dind 图像暴露给另一个容器,在这两种情况下,docker 引擎在主机级别 运行ning 或作为第一级容器docker,意味着它使用磁盘。

希望这能说明问题。