【发布时间】:2020-12-10 10:59:52
【问题描述】:
所以这不是要为-v寻找解决方法。
我有一个 Dockerfile,其目的是在容器 inside 的 /usr/local/<cross-compiler-path> 中安装一个交叉编译器。稍后在构建过程中,文件将被挂载到此交叉编译器,如下所示:
root@5bee5daf8165:/# mount <blah.img.gz> /usr/local/<cross-compiler-path>
我收到mount: /usr/local/<cross-compiler-path>: mount failed: Operation not permitted.
虽然如果我跳过这一步,完成构建,运行--privileged 容器并挂载,它工作正常。
我理解在构建中不提供特权模式的原因,因为它破坏了容器的“可移植性”,因为它们依赖于主机卷。但就我而言,我试图将它安装在容器自己的文件系统中。为什么不允许这样做?
为了记录,我尝试在不同的路径上安装交叉编译器,如下所示:
root@5bee5daf8165:/# mount <blah.img.gz> /home/<cross-compiler-path>
但这也不起作用。我想尝试在 Dockerfile 中构建并丢弃构建缓存,一旦我不再需要它们就会使我的容器膨胀。我有什么选择?
【问题讨论】:
-
您必须使用
COPY或ADD命令来实现。 -
您能多说一些关于您要挂载的内容以及为什么需要在构建过程中挂载的内容吗? (即使在 Docker 之外,这对我来说也有点不寻常。)
-
我有一个 arm64 设备的系统映像,它的驱动程序必须被编译。交叉编译器要求我将此系统映像挂载到它自己的安装目录,以收集构建相关的文件上下文和信息。