我有Dockerfile
应该构建Ubuntu
图片。但是,当我运行时
docker build -t ubuntu-test:latest ./Dockerfile
它在控制台上显示以下错误
无法准备上下文:context必须是目录:/ Users / tempUser / git / docker / Dockerfile
我在使用Mac OsX。我也试过sudo
。没什么办法。
答案 0 :(得分:59)
您需要指向目录。您不能指定dockerfile。
docker build -t ubuntu-test:latest .
工作。
docker build -t ubuntu-test:latest ./Dockerfile
无法正常工作。
答案 1 :(得分:28)
您还可以使用-f
选项
docker build -t ubuntu-test:latest -f Dockerfile.custom .
答案 2 :(得分:14)
要在构建时指定Dockerfile
,您可以使用:
docker build -t ubuntu-test:latest - < /path/to/your/Dockerfile
但如果ADD
或COPY
命令依赖于相对路径,它就会失败。您可以通过多种方式为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
并存在于上下文中,则将按命名约定隐式找到它。
很好,因为这意味着您通常可以立即在任何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
。
我按照以下步骤操作:
$sudo docker build -t ubuntu-test:latest
它成功地解决了问题和图像。
注意:build命令取决于docker版本以及我们正在使用的构建选项。 :)
答案 6 :(得分:0)
我收到错误消息的原因之一是文件名,请确保文件名是 Dockerfile 所以我想通了,希望对您有所帮助。