首页 > 解决方案 > docker-in-docker 使用内存还是磁盘?

问题描述

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

设置:我在 teamcity 代理 docker 映像上运行它,使用 docker-in-docker 配置

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

标签: linuxdockerout-of-memorydiskspace

解决方案


它使用磁盘。

本文详细解释了 docker-in-docker 的工作原理和方式。

我最初是在考虑 Teamcity 的经纪人的情况下问这个问题的,但我想概括一下这个问题。它似乎是行业标准,从未真正运行 docker-in-docker,因为它可能导致数据损坏,并且大多数用例都可以通过 docker-to-docker 解决方案来解决(如下所述)。尽管如此,在一些 CI 文档中,几乎 docker-in-docker 实现仍然被称为 docker-in-docker,即使它不是真正的 docker-in-docker 解决方案。

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

希望这可以澄清。


推荐阅读