我有一个Dockerfile
应该建立一个Ubuntu
图像。但是我什么时候跑
docker build -t ubuntu-test:latest ./Dockerfile
它在控制台上显示以下错误
无法准备上下文:上下文必须是目录:/ Users / tempUser / git / docker / Dockerfile
我在Mac OsX上。我也尝试过sudo
。没事
Answers:
您还可以使用-f
选项运行docker build
docker build -t ubuntu-test:latest -f Dockerfile.custom .
docker build -t my-custom-name -f /path_to_my_docker_file/Dockerfile-abcd .
要指定Dockerfile
何时构建,可以使用:
docker build -t ubuntu-test:latest - < /path/to/your/Dockerfile
但是,如果存在ADD
或COPY
命令取决于相对路径,它将失败。有多种方法可以指定context
for docker build
,有关更多信息,请参考docker build的文档。
docker build -t ubuntu:12.04 - < Dockerfile
您必须位于Dockerfile
docker build
命令docker build命令的基本语法是
docker build -t imagename:imagetag context_dir
上下文是一个目录,它确定docker构建过程将要看到的内容:从Dockerfile的角度来看,文件context_dir/mydir/myfile
系统中的任何文件都将进入/mydir/myfile
Dockerfile中,因此将在构建过程中。
如果dockerfile被调用并存在于Dockerfile
上下文中,则将通过命名约定隐式找到它。很好,因为这意味着您通常可以立即在任何Docker容器中找到Dockerfile。
如果您坚持使用其他名称,例如说“ / tmp / mydockerfile”,则可以这样使用-f
:
docker build -t imagename:imagetag -f /tmp/mydockerfile context_dir
但是dockerfile不会在同一个文件夹中,或者至少很难找到。
很简单,无论何时运行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
docker build -t my_apache:latest -f ~/Users/documents/myapache/Dockerfile
请注意.
在末尾添加了一个)
我面临着同样的问题。我正在使用docker version:17.09.0-ce
。
我遵循以下步骤:
$ sudo docker build -t ubuntu-test:latest .
解决了问题,成功创建了图像。
注意:build命令取决于docker版本以及我们使用的构建选项。:)
我收到错误的原因之一是文件名,请确保文件名是 Dockerfile。 所以我想通了,希望对您有所帮助。