我在root(〜)文件夹中设置了Dockerfile.我文件的前三行看起来像这样:
COPY file1 /root/folder/
COPY file2 /root/folder/
COPY file3 /root/folder/
Run Code Online (Sandbox Code Playgroud)
但它为每一行返回以下错误:
没有相应的文件和目录
这些文件与我的Dockerfile位于同一目录中,我也在docker build - < Dockerfile终端的同一目录中运行该命令.
这到底我做错了什么?
swa*_*eek 143
也检查.dockerignore文件.
我知道这是一个非常罕见的案例,但我在那里提到了那个文件.
Pop*_*eye 27
这可能是由于您将file1/file2/file3称为绝对路径而不是构建上下文,Docker仅在构建上下文中搜索路径.
例如,如果您使用COPY/home/yourname/file1,则Docker构建会将其解释为$ {docker build working directory}/home/yourname/file1,如果此处没有相同名称的文件,则不会引发文件或目录错误.
请参阅docker问题之一
ask*_*skb 16
在复制指令Dockerfile副本中的文件src的dest文件夹.看起来你是丢失的file1,file2并file3或试图建立Dockerfile从错误的文件夹.
建立它的命令也Dockerfile应该是这样的.
cd into/the/folder/
docker build -t sometagname .
Run Code Online (Sandbox Code Playgroud)
Tal*_*ree 14
似乎命令:
docker build -t imagename .
Run Code Online (Sandbox Code Playgroud)
和:
docker build -t imagename - < Dockerfile2
Run Code Online (Sandbox Code Playgroud)
没有以同样的方式执行.如果要使用Dockerfile和Dockerfile2在一个文件夹中构建2个docker镜像,则不能在第二个示例中使用stdin(<Dockerfile2)来使用COPY命令.相反,你必须使用:
docker build -t imagename -f Dockerfile2 .
Run Code Online (Sandbox Code Playgroud)
然后COPY按预期工作.
N D*_*oye 11
在 PS 上执行docker build - < Dockerfile或Get-Content .\Dockerfile | Docker build -可能无法获取上下文。我建议你使用
Docker build -f .\Path\Dockerfile .
Run Code Online (Sandbox Code Playgroud)
我刚刚遇到了这个问题,这里的建议都没有解决我的问题。原来我错了行结束我的文件,并有将其更改为相应的行尾。(在这种情况下,从 CRLF 到 LF,所以 Ubuntu 14.04 会识别我一直在 Windows 上编辑的脚本。)
我使用 VSCode 更改了行尾,大多数代码编辑器应该可以选择行尾。
希望这可以帮助某人。
我觉得有点愚蠢,但我的问题是我正在运行 docker-compose,并且我的 Dockerfile 位于 ./deploy 子目录中。我的 ADD 引用需要相对于项目的根目录,而不是 Dockerfile。
更改:ADD ./file.tar.gz /etc/folder/ 为:ADD ./deploy/file.tar.gz /etc/folder/
不管怎样,我想我会发帖以防有人遇到同样的问题。
尝试从其他目录运行docker文件时,这发生在我身上。
我有,COPY failed: stat /var/lib/docker/tmp/docker-builder929708051/XXXX: no such file or directory并通过指定docker文件设法解决了这一问题。
运行正常docker build . -f docker/development/Dockerfile。
但是运行Runningdocker build docker / development / Dockerfile`导致了这个问题。
-f或--file指定的名称和位置Dockerfile。
起初它很奇怪,因为当我Dockerfile在apps根目录中有它时,它工作正常。如果您想更好地管理环境docker文件,这将有所帮助。
小智 6
问题就在这里:
\n\n\n如果使用 STDIN (docker build - < somefile) 构建,则没有\n构建上下文,因此可以使用 COPY\xe2\x80\x99t。
\n
欲了解更多信息:https://docs.docker.com/engine/reference/builder/#copy
\n只需以这种方式构建 docker:
\ndocker build -t name-of-your-tag .\nRun Code Online (Sandbox Code Playgroud)\n
这是解决方案和最佳实践:
您需要创建一个资源文件夹,您可以在其中保存要复制的所有文件。
??? Dockerfile
??? resources
? ??? file1.txt
? ??? file2.js
Run Code Online (Sandbox Code Playgroud)
复制文件的命令应该这样指定:
COPY resources /root/folder/
Run Code Online (Sandbox Code Playgroud)
在哪里
* resources - 您在 Dockerfile 所在的同一文件夹中创建的本地文件夹
* /root/folder/ - 容器中的文件夹
| 归档时间: |
|
| 查看次数: |
78049 次 |
| 最近记录: |