Docker构建提供“无法准备上下文:上下文必须是目录:/ Users / tempUser / git / docker / Dockerfile”

时间:2017-04-08 15:36:53

标签: docker dockerfile

我有Dockerfile应该构建Ubuntu图片。但是,当我运行时

docker build -t ubuntu-test:latest ./Dockerfile

它在控制台上显示以下错误

  

无法准备上下文:context必须是目录:/ Users / tempUser / git / docker / Dockerfile

我在使用Mac OsX。我也试过sudo。没什么办法。

7 个答案:

答案 0 :(得分:59)

您需要指向目录。您不能指定dockerfile。

docker build -t ubuntu-test:latest . 工作

docker build -t ubuntu-test:latest ./Dockerfile 无法正常工作

答案 1 :(得分:28)

您还可以使用-f选项

运行docker build

docker build -t ubuntu-test:latest -f Dockerfile.custom .

答案 2 :(得分:14)

要在构建时指定Dockerfile,您可以使用:

docker build -t ubuntu-test:latest - < /path/to/your/Dockerfile

但如果ADDCOPY命令依赖于相对路径,它就会失败。您可以通过多种方式为context指定docker build,有关详细信息,请参阅docs of docker build

答案 3 :(得分:5)

了解上下文

docker build命令

docker的build命令的基本语法是

docker build -t imagename:imagetag context_dir

上下文

上下文是一个目录,用于确定Docker构建过程将要看到的内容:从Dockerfile的角度来看,文件系统中的任何文件context_dir/mydir/myfile都会在Dockerfile中成为/mydir/myfile,因此构建过程。

dockerfile

如果将dockerfile称为Dockerfile并存在于上下文中,则将按命名约定隐式找到它。 很好,因为这意味着您通常可以立即在任何Docker容器中找到Dockerfile。

如果您坚持使用其他名称,例如说“ / tmp / mydockerfile”,则可以这样使用-f

docker build -t imagename:imagetag -f /tmp/mydockerfile context_dir

,但是dockerfile不会在同一文件夹中,或者至少很难找到。

答案 4 :(得分:1)

很简单,每当运行Docker构建时,docker想知道图像名称是什么,所以我们需要传递-t :.现在确保您位于Dockerfile所在的目录中并运行

docker build -t <image_name>:<version> .docker build -t my_apache:latest .假设您与Dockerfile位于同一目录中,否则传递-f标志和Dockerfile。

docker build -t my_apache:latest -f ~/Users/documents/myapache/Dockerfile

答案 5 :(得分:0)

我面临同样的问题。我正在使用docker version:17.09.0-ce

我按照以下步骤操作:

  1. 创建Dockerfile并添加用于创建docker image的命令
  2. 转到我们创建Dockfile的目录
  3. 执行以下命令$sudo docker build -t ubuntu-test:latest
  4. 它成功地解决了问题和图像。

    注意:build命令取决于docker版本以及我们正在使用的构建选项。 :)

答案 6 :(得分:0)

我收到错误消息的原因之一是文件名,请确保文件名是 Dockerfile 所以我想通了,希望对您有所帮助。