在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
文件夹中。 看起来像是要么丢失file1
, file2
和file3
要么尝试从错误的文件夹构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
工作。
但运行Running
dockerbuild设docker/开发/ Dockerfile`造成这个问题。
-f
或--file
指定Dockerfile
的名称和位置。
它发现它起初很奇怪,因为当我在应用程序根目录中的Dockerfile
工作正常。 如果你想更好地pipe理你的环境docker文件,这将会有所帮助。
如果你确定你做的是正确的事情,但docker工人仍然抱怨,看看这个问题: https : //github.com/moby/moby/issues/27134 。
我被烧了,这似乎像重新启动docker引擎service docker restart
将只是解决这个问题。