我在跑 :
$ 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 它就可以工作!