在Dockerfile中复制文件,没有这样的文件或目录?

我有一个Dockerfile设置在我的根(〜)文件夹中。 我的文件的前三行是这样的:

COPY file1 /root/folder/ COPY file2 /root/folder/ COPY file3 /root/folder/ 

但它为每行返回以下错误:

无此文件或目录

这些文件和我的Dockerfile在同一个目录中,而且我在terminal的同一目录下运行docker build - < Dockerfile命令docker build - < Dockerfile

我在这里做错了什么?

Dockerfile的COPY指令将src的文件复制到dest文件夹中。 看起来像是要么丢失file1file2file3要么尝试从错误的文件夹构buildDockerfile

请参阅Dockerfile文档

另外构buildDockerfile的命令也是这样的。

 cd into/the/folder/ docker build -t sometagname . 

请检查.dockerignore文件。

我知道这是一个非常罕见的情况,但是我在那里提到了那个文件。

这可能是由于您引用file1 / file2 / file3作为不在构build上下文中的绝对path,Docker仅在构build上下文中searchpath。

例如,如果使用COPY / home / yourname / file1,Docker构build将其解释为$ {docker build working directory} / home / yourname / file1,如果没有同名文件,则不会引发文件或目录错误。

请参阅Docker问题之一

似乎命令:

 docker build -t imagename . 

和:

 docker build -t imagename - < Dockerfile2 

不以相同的方式执行。 如果要使用Dockerfile和Dockerfile2在一个文件夹中构build2个泊坞窗图像,则不能在第二个示例中使用stdin(<Dockerfile2)使用COPY命令。 相反,你必须使用:

 docker build -t imagename -f Dockerfile2 . 

然后COPY按预期工作。

文件找不到Docker put_archive的错误。 我正在使用Docker的Python API。 Docker版本1.12.5,版本7392c3b

 docker.errors.NotFound: 404 Client Error: Not Found ("lstat /var/lib/docker/aufs/mnt/39d58e00519ba4171815ee4444f3c43d2c6a7e285102747398f6788e39ee0e87/var/lib/neo4j/certificates: no such file or directory") 

我无法将文件复制到创build的泊坞窗容器。

 con = cli.create_container(...) cli.put_archive(...) cli.start(con['Id']) 

如果我改变操作的顺序,没有错误,文件被完全复制到我想要的。 所以我知道我的代码正在工作,正在做我想做的事情。 但在启动之前,将configuration文件复制到容器非常重要。 在启动之后应对文件使得容器启动时使用默认configuration,而不是启动容器之前需要复制的自定义configuration。 Docker声称这个问题已经结束,但仍然影响我的应用程序。

这工作; 相同代码不同的执行顺序。

 con = cli.create_container(...) cli.start(con['Id']) cli.put_archive(...) 

我觉得有点愚蠢,但我的问题是,我正在运行docker-compose,而我的Dockerfile在./deploy子目录中。 我的ADD引用需要相对于项目的根,而不是Dockerfile。

修改:ADD ./file.tar.gz / etc / folder /到:ADD ./deploy/file.tar.gz / etc / folder /

无论如何,以为我会张贴以防有人遇到同样的问题。

对于以下错误,

 COPY failed: stat /<**path**> :no such file or directory 

我通过重新启动docker服务得到了它。

 sudo service docker restart 

这发生在我试图从一个不同的目录运行docker文件。

我有COPY failed: stat /var/lib/docker/tmp/docker-builder929708051/XXXX: no such file or directory并设法通过指定COPY failed: stat /var/lib/docker/tmp/docker-builder929708051/XXXX: no such file or directory来解决这个问题。

运行docker build . -f docker/development/Dockerfile docker build . -f docker/development/Dockerfile工作。

但运行Runningdockerbuild设docker/开发/ Dockerfile`造成这个问题。

-f--file指定Dockerfile的名称和位置。

它发现它起初很奇怪,因为当我在应用程序根目录中的Dockerfile工作正常。 如果你想更好地pipe理你的环境docker文件,这将会有所帮助。

如果你确定你做的是正确的事情,但docker工人仍然抱怨,看看这个问题: https : //github.com/moby/moby/issues/27134 。
我被烧了,这似乎像重新启动docker引擎service docker restart将只是解决这个问题。