在任何 dockerfile 上运行 docker build 时出错:“无法准备上下文:无法评估 Dockerfile 路径中的符号链接”

在任何 dockerfile 上运行 docker build 时出错:“无法准备上下文:无法评估 Dockerfile 路径中的符号链接”

我在跑 :

$ docker build -t somefile .

每次运行时都会出现此错误:

unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat 

完整错误如下:

unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat /home/someusername/code/Dockerfile: no such file or directory

我认为这与我正在使用的 docker 版本有关,因此使用本指南升级到最新版本: 安装最新的docker版本。我仍然得到同样的错误。我尝试了不同的docker版本。我在不同的服务器上尝试过。我甚至尝试了不同的docker文件。

我尝试的最后一台服务器正在使用此版本的docker:

Docker version 17.03.1-ce, build c6d412e

不确定我哪里做错了。请进行健全性检查。

答案1

我看到很多地方都在问这个问题。好吧,我想我找到了解决方案。

在早期版本中,DockerFile 以大写字母“F”命名。但在最新版本中,只有包含小写字母“f”的 DockerFile 才会被识别。

我最近升级了docker[Docker版本17.09.1-ce,在CentOS 7上构建19e2cf6],发现

docker build -t someapp .

如果当前目录包含该文件则失败Docker文件,但如果包含Dockerfile

答案2

在当前目录中运行命令“ls”,查看 Dockerfile 的文件扩展名。如果有扩展名,则需要指定 Dockerfile.abc 的完整路径

否则,您可以使用“TextWrangler”(适用于 Mac)创建一个不带扩展名的空白 Dockerfile,然后运行命令

docker image build -t yourname/firstapp .

我希望你已经解决了这个问题;与未来的访问者分享:) 附件是带有解决方案的终端截图

在此处输入图片描述

答案3

在 Ubuntu 20.0.4 LTS-March 2021 上的 docker 版本 20.10.5、build 55c4c88 上,尝试使用以下语法使用 docker build 构建 docker 镜像:

$ docker build -t <containername> . -f <whateverthedockerfilename>.Dockerfile

解释:

每当您使用命令“docker build”时,如果您没有明确指定要从中构建docker镜像的dockerfile名称,那么默认情况下,docker引擎将开始在原始工作目录中寻找默认名称为“Dockerfile.Dockerfile”的Dockerfile,而不是寻找扩展名为“.Dockerfile”的任何Dockerfile。

因此,在这种情况下,每当 docker 引擎无法找到文件 'Dockerfile.Dockerfile' 时,它就会抛出错误“无法准备上下文:无法评估 Dockerfile 路径中的符号链接:lstat /home/xxx/yyy/Dockerfile:没有这样的文件或目录”。

因此,为了使一切运行,您只需指定原始目录中标记的 dockerfile 的正确名称,然后 BAM 它就可以工作!

相关内容