Docker build给出“无法准备上下文:上下文必须是目录:/Users/tempUser/git/docker/Dockerfile”

6tr1vspr  于 12个月前  发布在  Docker
关注(0)|答案(8)|浏览(194)

我有一个Dockerfile,它应该用来构建Ubuntu镜像。

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

字符串
它在控制台上显示以下错误
无法准备上下文:上下文必须是目录:/Users/tempUser/git/docker/Dockerfile
我在Mac OS X上。我也试过sudo。没有效果。

lrpiutwd

lrpiutwd1#

您需要指向目录,不能指定dockerfile。
docker build -t ubuntu-test:latest .可以**工作。
docker build -t ubuntu-test:latest ./Dockerfile不工作。

ig9co6j1

ig9co6j12#

您也可以使用-f选项运行docker build
docker build -t ubuntu-test:latest -f Dockerfile.custom .

lx0bsm1f

lx0bsm1f3#

理解上下文

docker build命令

docker的build命令的基本语法是

docker build -t imagename:imagetag context_dir

字符串

上下文

context是一个目录,它决定了docker构建过程将看到什么:从Dockerfile的Angular 来看,文件系统中的任何文件context_dir/mydir/myfile在Dockerfile中都会变成/mydir/myfile,因此在构建过程中也会变成/mydir/myfile

dockerfile

如果dockerfile名为Dockerfile,并且存在于上下文中,那么它将通过命名约定隐式地找到。这很好,因为这意味着您通常可以立即在任何docker容器中找到Dockerfile。
如果你坚持使用不同的名称,比如“/tmp/mydockerfile”,你可以像这样使用-f

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


但是这样dockerfile就不会在同一个文件夹中,或者至少更难找到。

qacovj5a

qacovj5a4#

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

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

字符串
但是如果有ADDCOPY命令依赖于相对路径,则会失败。有很多方法可以为docker build指定context,您可以参考docs of docker build了解更多信息。

gblwokeq

gblwokeq5#

我也遇到了同样的问题。我用的是docker version:17.09.0-ce
我遵循以下步骤:
1.创建Dockerfile并添加了创建Docker镜像的命令
1.转到我们创建Dockfile的目录
1.执行以下命令$ sudo docker build -t ubuntu-test:latest .
它解决了问题,并成功创建了图像。
注意:build命令取决于docker版本以及我们使用的build选项。:)

dsf9zpds

dsf9zpds6#

很简单,每当运行Docker build时,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

abithluo

abithluo7#

我得到一个错误的原因之一是文件名确保文件名是Dockerfile所以我想出来了,希望它可能会帮助别人。

ioekq8ef

ioekq8ef8#

我所做的是,我在一个文件夹中创建了一个名为“Dockerfile”的docker文件,当在文件夹中运行sudo docker build .时(注意命令末尾的点,点表示当前文件夹)

相关问题