Docker只识别相对目录,不识别绝对目录

  • 本文关键字:识别 Docker 相对 docker
  • 更新时间 :
  • 英文 :


在我的Dockerfile中,我试图将主机的目录复制到图像中。我注意到如果我使用一个相对目录,像这样:

COPY ./foo/bar /

COPY /foo/bar /

当我尝试构建图像时,我得到的错误也是令人困惑的:

lstat /foo/bar: no such file or directory

…因为如果我在主机上做一个ls /foo/bar,它就在那里。

是否有一些语法我错了,还是别的什么?

另一位用户在评论中回答。阅读docker构建文档

docker build命令从Dockerfile和" context "构建docker镜像。构建的上下文是位于指定PATH或URL中的文件集。构建过程可以引用上下文中的任何文件。例如,您的构建可以使用COPY指令来引用上下文中的文件。

编辑:正如the Fool在他关于上下文的评论中指出的那样。把上下文想象成根目录,docker不能离开。

通俗地说:您只能使用与您设置的上下文相关的路径执行COPY命令。

假设你有这样的目录结构:

<Dockerfile path>/
Dockerfile
somefile.txt
<your context directory>/
config/configfile
data/datafile

使用docker build命令:

docker build -f <Dockerfile path>/Dockerfile /<your context directory>

在docker文件中,你可以指定相对于的路径。目录,但不能访问上下文之上的任何内容。目录中。somefile.txt无法从Dockerfile访问。

最新更新