docker:"build" 需要 1 个参数。参见 'docker build --help'

docker: "build" requires 1 argument. See 'docker build --help'

尝试按照 docker 网站上的说明构建 docker 图片。

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'.

如何解决?

需要加点,表示使用本地目录下的Dockerfile

例如:

docker build -t mytag .

表示使用本地目录下的Dockerfile,如果使用docker1.5可以在别处指定Dockerfile。从 docker build:

的帮助输出中提取

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

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

我从 AWS 教程中复制了一条构建命令并将其粘贴到我的终端中,但出现了此错误。这让我发疯。手动输入后,它成功了!仔细观察我之前失败的命令,我注意到 "dash" 字符不同,它比我使用 "minus/dash" 键自己输入时得到的字符更细、更长。

差:

sudo docker build –t foo .

好:

sudo docker build -t foo .

你能看出区别吗?..剪切和粘贴很难。

使用以下命令

docker build -t mytag .

请注意,mytag 和 dot 之间有一个 space。这个点代表当前的工作目录。

在旧版本的 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\Daniele\app\ 是包含你的 Dockerfile 的路径

如果你想添加标签

C:\Users\Daniele\app> docker build -t friendlyhello:3.0 C:\Users\Daniele\app\


最后需要一个 DOT...


例如:

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

有点隐蔽,但是如果你注意最后的....

Docker 构建命令格式

在你的 powershell 中: 出现此类错误是因为您没有指定 Docker 文件的路径。

试试这个:

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

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

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

**试试这个格式:

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

只需在命令末尾提供点 (.),包括一个 space。

示例:

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

在这里你可以看到 "blink:v1" 然后是 space 然后是点 (.)

就是这样。

您可以从名为 docker file 且默认名为 Dockerfile 的文件构建 docker 图像。它在 docker 容器中包含您需要的一组 command/instruction。 下面的命令创建带有最新标签的图像,Docker文件应该出现在该位置(。表示存在目录)

docker build . -t <image_name>:latest

如果文件名不是默认的(Docker文件),您可以通过-f指定Docker文件 相同 Docker 文件内容。

FROM busybox
RUN echo "hello world"

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

您可能需要在执行此操作之前删除 .txt 部分,但是在 mac 上转到终端并 cd 进入您的 Docker 文件所在的目录和类型

chmod +x "Dockerfile"

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

在我的例子中,当我将多个 Gitlab env 变量传递给带有 --build-arg 标志的 docker build 时,这个错误发生在 Gitlab CI 管道中。

事实证明,其中一个变量中有一个 space ,这导致了错误。很难找到,因为管道日志只显示 $VARIABLE_NAME.

确保引用环境变量,以便 space 得到正确处理。

更改自:

--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 是一个 client/server 应用程序,在服务器上构建 运行s 不一定 docker 命令是 运行。 Docker 使用构建上下文作为 COPYADD 步骤中使用的文件的源。当您在当前目录中进行 运行 构建时,您将为上下文传递一个 .,也就是当前目录。您可以传递一个完全不同的目录,甚至是 git 存储库,并且 docker 将使用该目录作为上下文执行构建,例如:

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

有关构建命令的这些选项的更多详细信息,请参阅 docker build documentation

如果你包含一个参数会怎样?

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

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

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

  • 不正确的引号:智能引号在命令行上不起作用,请手动输入而不是复制和粘贴。

  • 白色space 不是白色 space,或者看起来不是 space。

大部分这些都来自拼写错误或从修改文本以使其看起来漂亮的来源复制和粘贴,破坏它以用作命令。

如何找出 CLI 错误的位置?

最简单的调试方法,运行没有任何其他标志的命令:

docker build .

一旦成功,重新添加标志,直到出现错误,然后您就会知道哪个标志损坏了,需要引号 fixed/added 或更正破折号等。