我写了一个看起来像这样的Dockerfile
FROM ubuntu:12.04
RUN apt-get update
RUN apt-get install -y wget
现在我的主机中有一个名为abc.txt
的文件。如何将其复制到此容器中。我可以在Dockerfile中添加从Host到Container的任何步骤。
答案 0 :(得分:62)
使用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的更多详情
答案 1 :(得分:6)
对于那些遇到此错误(非常不清楚)的人:
复制失败: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/
失败的地方工作,但这有点难看。
答案 2 :(得分:2)
您可以使用ADD命令https://docs.docker.com/engine/reference/builder/#/add或COPY命令https://docs.docker.com/engine/reference/builder/#/copy
答案 3 :(得分:1)
我遇到了这个问题,我无法将zeppelin [1GB]目录复制到docker容器中并且遇到问题
COPY失败:stat /var/lib/docker/tmp/docker-builder977188321/zeppelin-0.7.2-bin-all:no 这样的文件或目录
我正在使用docker Version:17.09.0-ce并通过以下步骤解决了这个问题。
步骤1:将zeppelin目录[我要复制到docker包中]复制到包含“Dockfile”的目录中
第2步:编辑Dockfile并添加命令[我们要复制的位置] 添加./zeppelin-0.7.2-bin-all / usr / local /
步骤3:转到包含DockFile的目录并运行命令[alternative also available] docker build
步骤4:使用日志成功创建docker镜像
步骤5/9:ADD ./zeppelin-0.7.2-bin-all / usr / local / ---> 3691c902d9fe
步骤6/9:WORKDIR $ ZEPPELIN_HOME ---> 3adacfb024d8 .... 成功建造了b67b9ea09f02
答案 4 :(得分:1)
在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 build - < Dockerfile
从Docker文件构建。
答案 5 :(得分:0)
我能够这样将文件从主机复制到dockerfile中的容器中:
docker文件的内容如下,将文件从本地主机复制到容器的根目录: 来自ubuntu:16.04
COPY test.txt /
您应该看到该文件。
答案 6 :(得分:0)
如果要复制当前目录的内容,可以运行:
docker build -t <imagename:tag> -f- ./ < Dockerfile