我写了一个看起来像这样的 Dockerfile
FROM ubuntu:12.04
RUN apt-get update
RUN apt-get install -y wget
现在我abc.txt
在我的主机中调用了一个文件。我怎样才能将它复制到这个容器。我可以在 Dockerfile 中添加从主机复制到容器的任何步骤吗?
我写了一个看起来像这样的 Dockerfile
FROM ubuntu:12.04
RUN apt-get update
RUN apt-get install -y wget
现在我abc.txt
在我的主机中调用了一个文件。我怎样才能将它复制到这个容器。我可以在 Dockerfile 中添加从主机复制到容器的任何步骤吗?
像这样使用 COPY 命令:
COPY foo.txt /data/foo.txt
# where foo.txt is the relative path on host
# and /data/foo.txt is the absolute path in the image
在官方文档中阅读有关 COPY 的更多详细信息
另一种方法是使用 ADD,但如果您不想使用 ADD 的一些高级功能(例如解压缩 tar.gz 文件),这不是最佳做法。如果您仍想使用 ADD 命令,请这样做:
ADD abc.txt /data/abc.txt
# where abc.txt is the relative path on host
# and /data/abc.txt is the absolute path in the image
在官方文档中阅读有关 ADD 的更多详细信息
对于那些得到这个(非常不清楚)错误的人:
复制失败:stat /var/lib/docker/tmp/docker-builderXXXXXXX/abc.txt:没有这样的文件或目录
可能有很多原因,包括:
context
覆盖 Dockerfile 的上下文。您的 COPY 语句现在需要导航相对于 docker-compose.yml 中定义的路径,而不是相对于您的 Dockerfile。COPY abc.txt /app #This won't work
.dockerignore
or.gitignore
文件忽略的目录中(注意通配符)有时WORKDIR /abc
后面是失败的COPY . xyz/
作品COPY /abc xyz/
,但这有点难看。
我遇到了这个问题,我无法将 zeppelin [1GB] 目录复制到 docker 容器中并且遇到了问题
复制失败:stat /var/lib/docker/tmp/docker-builder977188321/zeppelin-0.7.2-bin-all:没有这样的文件或目录
我正在使用 docker Version: 17.09.0-ce 并通过以下步骤解决了该问题。
第1步:复制zeppelin目录[我想复制到docker包中]到包含“Dockfile”的目录中
第 2 步:编辑 Dockfile 并添加命令 [我们要复制的位置]
ADD ./zeppelin-0.7.2-bin-all /usr/local/
第 3 步:转到包含 DockFile 的目录并运行命令 [也可用替代方法]docker build
第 4 步:使用日志成功创建 docker 映像
步骤 5/9:添加 ./zeppelin-0.7.2-bin-all /usr/local/ ---> 3691c902d9fe
第 6/9 步:WORKDIR $ZEPPELIN_HOME ---> 3adacfb024d8 .... 成功构建 b67b9ea09f02
在 CentOS 7 上使用 Docker 19.03.8 时出现以下错误:
COPY failed: stat /var/lib/docker/tmp/docker-builderXXXXXXX/abc.txt: no such file or directory
我的解决方案是从 Docker 文件构建,docker build .
而不是docker build - < Dockerfile
.
您可以使用 ADD 命令https://docs.docker.com/engine/reference/builder/#/add或 COPY 命令https://docs.docker.com/engine/reference/builder/#/copy
我能够将文件从主机复制到 dockerfile 中的容器,如下所示:
docker文件内容如下,从本地主机拷贝一个文件到容器根目录:FROM ubuntu:16.04
复制 test.txt /
您应该看到该文件。
如果要复制当前目录的内容,可以运行:
docker build -t <imagename:tag> -f- ./ < Dockerfile