Docker -无法准备上下文:无法计算Dockerfile路径:GetFileAttributesEx中的符号链接

我今天刚刚下载了windows10 64bit的Docker工具箱。我正在看教程。当我试图使用Dockerfile构建一个映像时,我收到以下错误。

步骤:

  • 启动Docker快速入门终端。
  • Testdocker创建后。
  • 根据“Build your own image”中的文档准备Dockerfile;网页链接
  • 运行以下命令

docker build -t docker-whale .

Error: $ docker build -t docker-whale .

unable to prepare context: unable to evaluate symlinks in Dockerfile path: GetFileAttributesEx C:\Users\Villanueva\Test\testdocker\Dockerfile: The system cannot find the file specified.

我尝试了提到的几个选项@ https://github.com/docker/docker/issues/14339

    $ docker info
Containers: 4
Running: 0
Paused: 0
Stopped: 4
Images: 2
Server Version: 1.10.1
Storage Driver: aufs
Root Dir: /mnt/sda1/var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 20
Dirperm1 Supported: true
Execution Driver: native-0.2
Logging Driver: json-file
Plugins:
Volume: local
Network: bridge null host
Kernel Version: 4.1.17-boot2docker
Operating System: Boot2Docker 1.10.1 (TCL 6.4.1); master : b03e158 - Thu Feb 11 22:34:01 UTC 2016
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 996.2 MiB
Name: default
ID: C7DS:CIAJ:FTSN:PCGD:ZW25:MQNG:H3HK:KRJL:G6FC:VPRW:SEWW:KP7B
Debug mode (server): true
File Descriptors: 32
Goroutines: 44
System Time: 2016-02-19T17:37:37.706076803Z
EventsListeners: 0
Init SHA1:
Init Path: /usr/local/bin/docker
Docker Root Dir: /mnt/sda1/var/lib/docker
Labels:
provider=virtualbox

谢谢。

482766 次浏览

执行以下命令时:

docker build -t docker-whale .

检查Dockerfile是否在当前工作目录中。

在windows 10操作系统中,period是第一个参数

docker build . -t docker-whale

我把我的文件命名为dockerfile而不是dockerfile(大写),一旦我改变了这个名字,它就开始处理我的“dockerfile”。

这只是因为记事本在Dockerfile末尾添加了“。txt”

只需从Dockerfile中删除扩展名.txt,然后运行该命令

docker build -t image-name

它肯定会起作用的。

要构建Dockerfile,请将自动化内容保存在Dockerfile中。而不是Dockerfile,因为在打开文件命令时:

$ notepad Dockerfile

(一个文本文件被写入,所以文件不能构建)

要构建文件,运行:

$ notepad Dockerfile

现在运行:

$ docker build -t docker-whale .

确保你在Dockerfile的当前目录。

如果你在windows 8上工作,你将使用Docker工具箱。 从mydockerbuild目录运行以下命令,因为您的Dockerfile是一个textfile

docker build -t docker-whale -f ./Dockerfile.txt .

当我工作的路径在一个Junction目录下时,我在Windows上得到了这个。所以我的解决办法就是不在这条道路上工作。

我最初在PowerShell中创建了我的Dockerfile,虽然我没有看到文件上的扩展名,但它显示为PS文件类型…当我从notepad++创建文件时,确保选择“所有类型()”没有扩展名的文件类型(Dockerfile)。这使得我的映像构建命令成功完成....只要确保你的Dockerfile有一个“File”类型…

我得到了这个错误(在MacBook中),尽管我使用了正确的命令来创建图像,

docker build -t testimg .

后来我发现那条路就是问题所在。只需导航到包含docker文件的正确路径。只要仔细检查你当前的工作目录。没什么好惊慌的!

在Mac它适用于以下命令。(希望你的.Dockerfile在你的根目录)。

docker build -t docker-whale -f .Dockerfile .

问题是文件名应该是Dockerfile,而不是Dockerfile或Dockerfile,它应该是D大写,后面跟着小写的ockerfile,请注意

此问题与DockerFile创建过程有关。

为了工作,打开cmd, cd到感兴趣的目录,输入:

abc>DockerFile

这将在您的文件夹中创建一个名为DockerFile的文件。

现在类型:

notepad DockerFile

这将在记事本中打开DockerFile文件,你必须复制/粘贴提供的标准代码。

保存文件,现在,最后,用Docker输入构建您的映像:

docker build -t docker-whale .

这对我很有效,我希望它能帮助到其他人

我已经用VS2017 Docker支持工具创建了我的DockerFile,并且出现了同样的错误。过了一会儿,我意识到我不在包含Dockerfile (~\source\repos\DockerWebApplication\)的正确目录中。cd到项目内部的正确文件(~/source/repos/DockerWebApplication/DockerWebApplication),并成功创建docker映像。

在WSL中,路径转换似乎存在问题。Dockerfile在Ubuntu中的位置(我运行docker的位置和Dockerfile所在的位置)是“/home/sxw455/App1”,但这两个命令都不起作用:

$ pwd
/home/sxw455/App1
$ ll
total 4
drwxrwxrwx 0 sxw455 sxw455 4096 Dec 11 19:28 ./
drwxr-xr-x 0 sxw455 sxw455 4096 Dec 11 19:25 ../
-rwxrwxrwx 1 sxw455 sxw455  531 Dec 11 19:26 Dockerfile*
-rwxrwxrwx 1 sxw455 sxw455  666 Dec 11 19:28 app.py*
-rwxrwxrwx 1 sxw455 sxw455   12 Dec 11 19:27 requirements.txt*


$ docker build -t friendlyhello .
unable to prepare context: unable to evaluate symlinks in Dockerfile path: GetFileAttributesEx C:\Windows\System32\Dockerfile: The system cannot find the file specified.


$ docker build -t friendlyhello "/home/sxw455/App1"
unable to prepare context: path "/home/sxw455/App1" not found

但在Windows中,实际路径是:

C:\Users\sxw455\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs\home\sxw455\App1

所以我必须这样做(即使我从bash运行它):

$ docker build -t friendlyhello
"C:\Users\sxw455\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs\home\sxw455\App1"


Sending build context to Docker daemon   5.12kB
Step 1/7 : FROM python:2.7-slim
---> 0dc3d8d47241
Step 2/7 : WORKDIR /app
---> Using cache
---> f739aa02ce04
Step 3/7 : COPY . /app
---> Using cache
---> 88686c524ae9
Step 4/7 : RUN pip install --trusted-host pypi.python.org -r requirements.txt
---> Using cache
---> b95f02b14f78
Step 5/7 : EXPOSE 80
---> Using cache
---> 0924dbc3f695
Step 6/7 : ENV NAME World
---> Using cache
---> 85c145785b87
Step 7/7 : CMD ["python", "app.py"]
---> Using cache
---> c2e43b7f0d4a
Successfully built c2e43b7f0d4a
Successfully tagged friendlyhello:latest
SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories.

在最初的安装过程中,我在环境变量方面遇到了类似的问题,并遵循了一些建议,建议安装Windows DockerCE并破解环境变量,而不是安装Ubuntu DockerCE,因为(我希望我没记错)WSL没有完全实现systemctl。一旦Windows Docker CE安装完成并设置好环境变量,Docker就可以在WSL/Ubuntu下正常工作了。

最重要的是,确保你的文件名是Dockerfile,如果你使用另一个名字,它不会工作(至少对我来说不是这样)。

同样,如果你在Dockerfile所在的目录下,使用.,即: docker build -t Myubuntu1:v1 . 或者使用绝对路径,即 docker build -t Myubuntu1:v1 /Users/<username>/Desktop/Docker < / p >

文件名应该是Dockerfile而不是.Dockerfile该文件不应该有任何扩展名。

I my case(从Windows 10运行)
1)将文件myDockerFile.Dockerfile重命名为Dockerfile (没有文件扩展名) 然后在文件夹外运行这个命令:

docker build .\Docker-LocalNifi\

这对我和我的同事都适用,希望对你也适用

确保文件名Dockerfile没有任何扩展名。 只需要创建一个没有任何扩展名的文件

并确保Dockerfile在同一个目录,从你试图建立docker映像。

这个命令对我很管用:

docker build -t docker-whale -f Dockerfile.txt .

错误消息具有误导性

这个问题实际上与符号链接无关。
通常,问题只是描述构建的docker无法找到Dockerfile

典型原因如下:

    Dockerfile有错误的名字
    它必须被称为Dockerfile。如果它被调用,例如,dockerfile.DockerfileDockerfile.txt,或其他,它将不会被找到
  • Dockerfile是不是在语境中
    如果你说docker build contextdir, Dockerfile必须在contextdir/Dockerfile。如果你把它放在./Dockerfile中,比如,它将不会被找到 <李> Dockerfile 根本不存在
    听起来很傻吗?好吧,在我写了一个不错的Dockerfile之后,我从GitLab CI那里得到了上面的错误消息,但我忘记了签入它。傻吗?当然。不可能吗?没有。李< / >

从windows/linux命令行构建一个映像。 1. 在当前目录中创建一个docker文件。 FROM ubuntu 运行apt-get update 运行apt-get -y install apache2 添加。/var/www/html ENTRYPOINT apachectl -D前台 ENV名称Devops_Docker 2. 不要以。txt扩展名保存。 3.在命令行下运行命令 Docker构建。-t apache2image

构建dockerfile的两种方法:

你可以决定不指定要构建的文件名,而只是指定一个路径来构建它(这样做的话,文件名必须是Dockerfile,没有附加扩展名,例如:docker build -t docker-whale:tag path/to/Dockerfile

你可以用-f指定一个文件,不管你决定使用什么扩展名(在合理的范围内.txt.dockerfile.Dockerfile等.),例如docker build -t docker-whale:tag /path/to/file -f docker-whale.dockerfile

确保你的DOCKERfile在应用程序目录的根目录下,我在src中有我的,这导致了这个错误,因为Docker没有找到DOCKERfile的路径

如果我们在我们的环境中有多个docker文件,只有Dockerfile不能满足我们的要求。

docker build -t ihub -f Dockerfile.ihub .

因此,使用file (-f参数)命令来指定docker文件(Dockerfile.ihub)

我错误地在我的工作目录中创建了Dockerfile.txt,导致上述错误,而build . c

修复是文件中的删除.txt扩展名

文件名应该是Dockerfile,只能是没有任何延期

在你的项目目录中执行docker build -t getting-started .,确保Dockerfile存在并且没有.txt扩展名。 如果你在Windows上,检查'文件扩展名'在下面的视图选项卡在 文件资源管理器显示是否存在.txt,如果前者为真,则删除它。 好运。< / p >

我也面临着同样的问题,当我创建名为DockerFile的文件时,它得到了解决,并提到了所有想要在创建任何映像时执行的命令。

这个错误意味着docker build使用了一个不正确输入的PATH | URL,或者在当前目录中找不到Dockerfile。此外,确保从集成终端(例如IDE或文本编辑器中的bash)运行该命令时,您具有这样做的管理权限。 最好是从你的终端用pwd检查PATH(如果在windows上使用简单的cli,则在bash shelldir中),并复制你想要构建映像的确切路径

docker build C:\windows\your_amazing_directory

docker build --help还将显示在格式错误或非法命令的情况下可用的选项。

如果您已将第二个驱动器作为“已挂载卷”挂载到NTFS文件夹,则会出现此问题。

将文件移动到挂载卷之外的驱动器位置。

请检查docker是否在您的窗口上运行,我试图找到解决方案,然后意外地检查并发现问题

确保您运行了该命令

docker build . -t docker-whale

从包含dockerfile的目录

在Linux中,文件夹是区分大小写的。我得到这个错误是因为文件夹名为TestAPI,并放入了TestAPI。

  1. 确保您移动到Dockerfile所在的目录。
  2. 确保Dockerfile是无扩展名的。也就是说,不是Dockerfile.txt、Dockerfile.rtf或任何其他文件。
  3. 确保你命名为Dockerfile,而不是Dockerfile, Dockerfile或任何其他。

docker build -t docker-whale -f DockerFile。

安装docker.io而不是docker帮助了我

即。

apt install docker.io