在构建中引用文件 (Docker)

Referencing files inside build (Docker)

我使用 boot2docker 并希望使用 Dockerfile 构建一个简单的 docker 镜像:

# Pull base image.
FROM elasticsearch

# Install Marvel plugin

RUN \
    && export ES_HOME=/usr/share/elasticsearch  \
    && cd $ES_HOME  \
    && bin/plugin  -u  file:///c/Users/buliov1/dev/elastic/plugins/marvel-latest.zip -i elasticsearch/marvel/latest

路径 /c/Users/buliov1/dev/elastic/plugins/marvel-latest.zip 存在并且可以在我构建 docker 文件的机器上访问。 问题是我得到的构建内部 Failed: FileNotFoundException[/c/Users/buliov1/dev/elastic/plugins/marvel-latest.zip (No such file or directory)].

我搜索了文档,我看到的唯一解决方案是使用 ADD/COPY 并首先复制图像中的文件,然后 运行 使用该文件的命令。 我不知道 docker build 究竟是如何工作的,但是,有没有一种方法可以在不先复制文件的情况下构建它?

docker build 进程在 运行 内部 Docker 容器中,无法访问主机文件系统。将文件放入构建环境的唯一方法是使用 ADDCOPY 机制(或者通过网络获取它们,例如 curlwget 之类的)。