linux - docker-in-docker 使用内存还是磁盘?
问题描述
我正在尝试在 docker (docker-in-docker, dind) 中构建一个 docker 映像。图像非常大,无法构建并出现错误no space left on device
。
设置:我在 teamcity 代理 docker 映像上运行它,使用 docker-in-docker 配置
我的主机是否需要更多内存或更多磁盘空间?docker-in-docker 是在内存中还是在磁盘上构建的?
解决方案
它使用磁盘。
本文详细解释了 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 第一级中的容器运行,这意味着它使用磁盘。
希望这可以澄清。
推荐阅读
- sockets - 为什么连接读取返回缓冲区的长度,而不是真正发送?
- kubernetes - 连接测试在 netcat 上工作但不在 telnet 上
- interface - 苹果手表应用程序上的黑屏页面超过一页
- javascript - 在javascript中组合2张图片
- php - 如何在 PHP 等待用户输入时定期调用函数?
- mysql - 如何使用条件语句在 SQL 中排序
- c++ - 为什么 vector::erase 似乎会导致崩溃?
- c - c中的以下代码是否会产生内存泄漏?
- audio - 使用软件或命令行从音频/视频中删除人声
- html - 使用 Angular 8 的 Ionic 框架 - 需要基本 HTML 表单,最小,最大验证不起作用