我正在尝试为我们的开发过程构建一个新的 Docker 映像,使用 cpanm
安装一堆 Perl 模块作为各种项目的基础映像。
在开发 Dockerfile 时, cpanm
返回失败代码,因为某些模块没有安装干净。
我很确定我需要 apt
来安装更多东西。
我的问题是,为了检查日志,我在哪里可以找到输出中引用的 /.cpanm/work
目录?在一般情况下,如何检查失败的 docker build
命令的文件系统?
早上编辑 在咬紧牙关运行 find
我发现
/var/lib/docker/aufs/diff/3afa404e[...]/.cpanm
这是可靠的,还是我最好构建一个“裸”容器并手动运行东西,直到我拥有我需要的所有东西?
原文由 Altreus 发布,翻译遵循 CC BY-SA 4.0 许可协议
每次 docker 从 Dockerfile 成功执行
RUN
命令时,都会提交 映像文件系统中的新层。您可以方便地使用这些图层 ID 作为图像来启动新容器。获取以下 Dockerfile:
并构建它:
您现在可以从
00f017a8c2a6
、044e1532c690
和5bd8172529c1
启动一个新容器:当然,您可能想启动一个 shell 来探索文件系统并尝试命令:
当其中一个 Dockerfile 命令失败时,您需要做的是查找 前一层的 id 并在从该 id 创建的容器中运行 shell:
一旦进入容器:
如果您确实需要在失败的实际层中进行试验,而不是从最后一个工作层开始工作,请参阅 Drew 的回答。