289

我今天刚刚下载了 Docker Toolbox for Windows 10 64bit。我正在阅读教程。尝试使用 Dockerfile 构建映像时收到以下错误。

脚步:

  • 启动 Docker 快速入门终端。
  • 创建后的testdocker。
  • 按照“构建您自己的映像”Web 链接中的说明准备 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
4

35 回答 35

277

在执行以下命令时:

docker build -t docker-whale .

检查 Dockerfile 是否存在于您当前的工作目录中。

于 2016-07-14T10:00:21.527 回答
174

错误消息具有误导性。这个问题实际上与符号链接无关。通常只是docker 找不到描述构建的 Dockerfile。

典型的原因有这些:

  • Dockerfile名称错误
    必须调用它Dockerfile。如果它被调用,例如,,,,dockerfile或其他,它将不会被找到。.DockerfileDockerfile.txt
  • Dockerfile不在上下文中
    如果你说docker build contextdir,Dockerfile 必须在contextdir/Dockerfile. 相反,如果你有它./Dockerfile,它就不会被发现。
  • Dockerfile根本不存在
    听起来很傻?好吧,在我编写了一个不错的 Dockerfile 之后,我从 GitLab CI 收到了上述错误消息,但忘记签入它。傻吗?当然。不太可能?不。
于 2019-08-30T09:47:07.030 回答
43

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

docker build -t docker-whale -f ./Dockerfile.txt .
于 2017-03-02T05:53:56.253 回答
25

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

于 2019-03-27T15:56:40.647 回答
20
  1. 确保您已移至 Dockerfile 所在的目录。
  2. 确保您的 Dockerfile 没有扩展名。也就是说,不是 Dockerfile.txt、Dockerfile.rtf 或任何其他文件。
  3. 确保您命名为 Dockerfile,而不是 DockerFile、dockerfile 或任何其他名称。
于 2021-03-09T07:40:23.567 回答
19

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

于 2017-01-09T22:57:46.190 回答
15

只需从 Dockerfile 中删除扩展名 .txt 并运行命令

docker build -t image-name 

它肯定会起作用。

于 2017-02-13T15:10:31.973 回答
9

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

docker build -t testimg .

后来我发现路径是问题。只需导航到包含 docker 文件的正确路径即可。只需仔细检查您当前的工作目录。没什么可惊慌的!

于 2017-11-08T19:15:25.720 回答
5

那是因为记事本在 Dockerfile 末尾添加了“.txt”

于 2017-02-04T17:34:23.337 回答
4

在 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 没有完全实现系统控制。一旦完成 Windows Docker CE 安装并设置环境变量,docker 就可以在 WSL/Ubuntu 下正常工作。

于 2018-12-12T01:08:19.087 回答
4

这个命令对我有用:

docker build -t docker-whale -f Dockerfile.txt .
于 2019-08-13T15:48:39.660 回答
4

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

于 2018-11-25T12:33:12.917 回答
3

在 Windows 10 中,句点是第一个参数

docker build . -t docker-whale

于 2016-11-04T13:03:08.767 回答
3

构建 dockerfile 的两种方法:

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

或者

您可以指定一个文件,-f并且决定使用什么扩展名(在 reason .txt.dockerfile等范围内.Dockerfile)并不重要,例如docker build -t docker-whale:tag /path/to/file -f docker-whale.dockerfile.

于 2019-11-10T14:46:50.723 回答
2

我最初是在 PowerShell 中创建我的 Dockerfile,虽然我没有在文件上看到扩展名,但它显示为 PS 文件类型……一旦我从 Notepad++ 创建文件,确保选择“所有类型(.)”文件在文件名 (Dockerfile) 上键入不带扩展名的类型。这使我的图像构建命令能够成功完成......只需确保您的 Dockerfile 具有“文件”类型......

于 2017-06-23T13:32:15.970 回答
2

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

于 2018-05-23T10:21:12.147 回答
2

该错误意味着docker build使用的 aPATH | URL输入不正确或Dockerfile在当前目录中找不到。此外,请确保在从集成终端(例如bash,在您的 IDE 或文本编辑器中)运行命令时,您具有执行此操作的管理员权限。如果您可以使用(在Windows 中或使用简单的 Windows)PATH从终端检查并复制您希望构建图像的确切路径,则最好。pwdbash shelldircli

docker build C:\windows\your_amazing_directory

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

于 2020-07-14T08:38:46.970 回答
2

确保您DOCKERfile在应用程序目录的根目录中,我在 src 中有我的,导致此错误,因为 Docker 找不到路径DOCKERfile

于 2019-11-13T10:30:32.340 回答
1

最重要的是确保你的文件名是Dockerfile如果你使用另一个名字它不会工作(至少它不适合我。)

此外,如果您在 Dockerfile 所在的同一目录中,请使用.ie docker build -t Myubuntu1:v1 . 或使用绝对路径,即 docker build -t Myubuntu1:v1 /Users/<username>/Desktop/Docker

于 2019-01-28T12:27:36.710 回答
1

如果我们的环境中有多个 docker 文件,那么 Dockerfile 将无法满足我们的要求。

docker build -t ihub -f Dockerfile.ihub .

所以使用file(-f 参数)命令来指定你的 docker 文件(Dockerfile.ihub)

于 2020-05-08T07:26:05.057 回答
1

我的情况(从 Windows 10 运行)
1)将文件重命名myDockerFile.DockerfileDockerfile不带文件扩展名)。
然后文件夹外部运行此命令:

docker build .\Docker-LocalNifi\ 

这对我和我的同事都有效,希望对你也有效

于 2019-04-02T08:57:47.447 回答
1

确保文件名“Dockerfile”未使用任何扩展名保存。只需创建一个没有任何扩展名的文件。

并确保 Dockerfile 与您尝试构建 docker 映像的目录位于同一目录中。

于 2019-04-16T05:00:21.720 回答
1

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

$ notepad Dockerfile 

(已写入文本文件,因此无法构建文件)

要构建文件运行:

$ notepad Dockerfile

现在运行:

$ docker build -t docker-whale .

确保您位于 Dockerfile 的当前目录中。

于 2017-02-16T06:05:48.280 回答
0

在 Linux 中,文件夹区分大小写。我收到此错误是因为文件夹名称 TestAPI 并且正在放置 TestApi。

于 2021-02-08T08:00:20.607 回答
0

当我工作的路径位于 Junction 目录下时,我在 Windows 上得到了这个。所以我的解决方法是不在该路径下工作。

于 2017-05-16T21:25:23.557 回答
0

请检查docker是否在您的Windows上运行,我尝试找到解决方案然后意外检查并找到问题

于 2020-08-23T20:28:23.497 回答
0

如果您已将第二个驱动器作为“已安装卷”安装到 NTFS 文件夹,那么您可能会遇到此问题。

将您的文件移动到已安装卷之外的驱动器位置。

于 2020-08-13T10:47:54.020 回答
0

在您的项目目录中执行docker build -t getting-started .并确保 Dockerfile 存在并且没有.txt扩展名。如果您使用的是 Windows,请检查文件资源管理器中视图选项卡下的“文件扩展名”以显示 .txt 是否存在,如果前者为真,则将其删除。祝你好运。

于 2020-05-28T17:51:02.527 回答
0

确保运行命令

docker build . -t docker-whale 

从具有 dockerfile 的目录中

于 2020-09-08T15:26:54.203 回答
0

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

解决方法是从文件中删除.txt扩展名。

文件名Dockerfile只应不带任何扩展名

于 2020-05-14T13:57:35.073 回答
0

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

docker build -t docker-whale -f .Dockerfile .
于 2018-05-14T06:17:35.213 回答
0

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

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

abc>DockerFile

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

现在输入:

notepad DockerFile 

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

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

docker build -t docker-whale . 

这对我有用,我希望它可以帮助其他人

于 2018-10-31T12:32:57.770 回答
0

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

于 2020-06-06T14:28:10.017 回答
-1

我试过了,它奏效了:

$ docker build -t test_dotnet_image 
"C:\Users\ssundarababu\Documents\Docker\Learn\SimpleDockerfile"

请参阅文件夹名称周围的引号+取消引号。

注意:在文件夹"C:\Users\ssundarababu\Documents\Docker\Learn\SimpleDockerfile"中我有我的 Dockerfile。

于 2017-08-02T14:21:17.900 回答
-1

在 windows/linux 中从命令行构建图像。1. 在当前目录中创建一个 docker 文件。例如:从 ubuntu RUN apt-get update RUN apt-get -y install apache2 ADD 。/var/www/html ENTRYPOINT apachectl -D FOREGROUND ENV name Devops_Docker 2. 不要使用 .txt 扩展名保存它。3. 在命令行下运行命令 docker build 。-t apache2image

于 2019-09-28T04:33:46.510 回答