我写了一个看起来像这样的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中添加从主机复制到容器的任何步骤吗?
Answers:
像这样使用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 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的更多详细信息
对于那些收到此(非常不清楚)错误的人:
COPY失败: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
或.gitignore
文件忽略的目录中(请注意不要使用通配符)有时候,WORKDIR /abc
其次是COPY . xyz/
作品在那里COPY /abc xyz/
失败了,但它是一个有点难看。
.gitignore
一个问题是防止ADD foo.zip .
在我Dockerfile。
我遇到了这个问题,我无法将zeppelin [1GB]目录复制到docker容器中,并且遇到了问题
COPY失败:stat /var/lib/docker/tmp/docker-builder977188321/zeppelin-0.7.2-bin-all:没有这样的文件或目录
我正在使用docker版本: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 build .
而不是从Docker文件构建docker build - < Dockerfile
。
我能够将主机中的文件复制到dockerfile中的容器中,如下所示:
docker文件的内容如下,将文件从本地主机复制到容器的根目录:FROM ubuntu:16.04
COPY test.txt /
您应该看到该文件。
如果要复制当前目录的内容,可以运行:
docker build -t <imagename:tag> -f- ./ < Dockerfile