我有一个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命令取决于相对路径,它将失败。有多种方法可以指定contextfor 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/myfileDockerfile中,因此将在构建过程中。
如果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。 所以我想通了,希望对您有所帮助。