docker:“build"requires 1 argument. 。参见'docker build—help'

正在按照docker 网站上的说明构建docker image。

https://docs.docker.com/examples/running_redis_service/ < a href = " https://docs.docker.com/examples/running_redis_service/ " > < / >

这是我得到的错误将遵循文档上的说明,并使用这个Dockerfile

FROM        ubuntu:14.04
RUN         apt-get update && apt-get install -y redis-server
EXPOSE      6379
ENTRYPOINT  ["/usr/bin/redis-server"]




sudo docker build -t myrepo/redis
docker: "build" requires 1 argument. See 'docker build --help'.

如何解决?

364436 次浏览

您需要添加一个点,这意味着使用本地目录中的Dockerfile。

例如:

docker build -t mytag .

这意味着你在本地目录中使用Dockerfile,如果你使用docker 1.5,你可以在其他地方指定Dockerfile。从docker build的帮助输出中提取:

-f, --file="" Name of the Dockerfile(Default is 'Dockerfile' at context root)

是否从其他地方(网页或其他文件)复制了构建命令?试着从头输入。

我从AWS教程中复制了一个构建命令,并将其粘贴到我的终端,并得到了这个错误。我都快疯了。在用手输入之后,它工作了!仔细观察我之前失败的命令,我注意到“破折号”字符是不同的,它比我自己用“减号/破折号”键输入的字符更细,更长。

缺点:

Sudo docker build -t foo。

好:

Sudo docker build -t foo。

你能看出区别吗?复制粘贴很难。

使用以下命令

docker build -t mytag .

注意mytag和dot之间有一个空格。这个点表示当前的工作目录。

在旧版本的Docker中,似乎你需要使用这个顺序:

docker build -t tag .

而不是

docker build . -t tag

打开PowerShelland并遵循以下说明。 这种类型的错误通常出现在Windows S.O.中 当你使用命令构建时需要一个选项和一个路径

出现这种类型的错误是因为您没有在Dockerfile中指定路径。

试试这个:

C:\Users\Daniele\app> docker build -t friendlyhello C:\Users\Daniele\app\
  1. Friendlyhello是分配给容器的名称
  2. c:\ users \ daniel \app\是包含Dockerfile的路径

如果你想添加一个标签

C:\Users\Daniele\app> docker build -t friendlyhello:3.0 C:\Users\Daniele\app\
人力资源> < p > <

. .


例如:

$ docker build -t <your username>/node-web-app .

它有点隐藏,但如果你注意到结尾的.

Docker构建命令格式

在你的powershell: 出现这种类型的错误是因为您没有在Dockerfile中指定路径

试试这个:

$ docker build -t friendlyhello:latest -f C:\\TestDockerApp\\Dockerfile.txt

friendlyhello是你分配给容器的名称,并添加版本,只需使用:最新

< >强- f C: \ TestDockerApp \ Dockerfile.txt -你想添加一个标签,因为构建命令需要一个参数或标签 DockerFile是一个文本文档,所以明确添加扩展名. txt

**尝试以下格式:

$ docker build -t friendlyhello:latest -f C:\\TestDockerApp\\Dockerfile.txt .**

__abc0只要在命令的结尾提供一个点(.),包括一个空格。

例子:

命令:docker build -t "blink:v1"。

在这里你可以看到“blink:v1”然后一个空格然后点(.)

这是它。

您可以从一个名为docker file并默认命名为Dockerfile的文件构建docker映像。它有一组你在docker容器中需要的命令/指令。 下面的命令创建带有标签latest的图像,Dockerfile应该显示在该位置(。表示当前目录)

docker build . -t <image_name>:latest
如果Dockerfile不是默认文件名(Dockerfile),可以通过-f指定Dockerfile。

. Docker文件内容
FROM busybox
RUN echo "hello world"

我的问题是Dockerfile.txt需要转换为Unix可执行文件。一旦我这样做了,错误就消失了。

在这样做之前,你可能需要删除。txt部分,但在mac上,进入终端和cd到Dockerfile所在的目录和类型

chmod +x "Dockerfile"

然后它会将您的文件转换为Unix可执行文件,然后由Docker构建命令执行。

在我的情况下,这个错误发生在一个Gitlab CI管道,当我传递多个Gitlab env变量docker build--build-arg标志。

结果是导致错误的其中一个变量有空格。很难找到,因为管道日志只显示$VARIABLE_NAME

确保引用环境变量,以便正确处理空格。

改变:

--build-arg VARIABLE_NAME=$VARIABLE_NAME

:

--build-arg VARIABLE_NAME="$VARIABLE_NAME"

下面的命令对我有用。Docker文件放在my-app-master文件夹中。

docker build -f my-app-master/Dockerfile -t my-app-master

如果有人在试图标记-t图像时遇到这个问题,并且还从一个不命名为Dockerfile的文件(即不简单地使用.路径)构建它,你可以这样做:

docker build -t my_image -f my_dockerfile .

注意,docker期望将目录作为参数,将文件名作为选项。

从命令运行:

sudo docker build -t myrepo/redis

没有“争论”;传递给docker build命令,只有一个标志-t和该标志的值。在docker解析完命令的所有标志后,在运行构建时应该会留下一个参数。

这个参数就是构建上下文。标准命令包含上下文的尾随点:

sudo docker build -t myrepo/redis .

构建上下文是什么?

每个docker构建都会向构建服务器发送一个目录。Docker是一个客户端/服务器应用程序,构建运行在服务器上,这并不一定是运行Docker命令的地方。Docker使用构建上下文作为COPYADD步骤中使用的文件的源。当您在当前目录中运行构建时,您将为上下文传递.,也就是当前目录。你可以传递一个完全不同的目录,甚至是一个git repo, docker将使用它作为上下文执行构建,例如:

docker build -t sudobmitch/base:alpine --target alpine-base \
'https://github.com/sudo-bmitch/docker-base.git#main'

有关构建命令的这些选项的更多详细信息,请参见Docker构建文档. xml

如果你加入一个论点呢?

如果包含构建上下文的值(通常是.),但仍然看到此错误消息,则可能传递了多个参数。通常情况下,这是由于未能解析标志,或传递了一个不带引号的空格字符串。docker看到多个参数的可能原因包括:

  • 路径或参数周围缺少引号(注意使用可能有空格的变量)

  • 命令中不正确的破折号:请确保手动输入这些破折号,而不是复制粘贴

  • 不正确的引号:智能引号不能在命令行上工作,手动键入它们而不是复制和粘贴。

  • 不是空格的空格,或者看起来不是空格。

大多数这些错误都是由于打字错误或从源代码复制粘贴来修改文本,使其看起来更漂亮,使其无法用作命令。

如何找出CLI错误在哪里?

我调试这个最简单的方法是,在没有任何其他标志的情况下运行命令:

docker build .

一旦它起作用,再添加标记,直到你得到错误,然后你就会知道哪个标记坏了,需要修复/添加引号或纠正破折号等。

#Using a file other than Dockerfile instead.
#Supose my file is `Dockerfile-dev`


docker build -t mytag - < Dockerfile-dev


在我的例子中,我使用了一个破折号(稍微长一点的连字符)符号——在t选项出现问题之前。

docker build –t simple-node .

替换为连字符/减号。

docker build -t simple-node .

我在管道脚本中使用Docker与Jenkins管道时得到了这个错误。解决方案是在管道脚本中使用以下语法:

docker.build("[my_docker_image_tag]", "-f ./path/to/my/Dockerfile.jvm .")