docker:"build"需要1个参数.请参阅'docker build --help'

Tam*_*mpa 255 containers docker

尝试按照从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'.
Run Code Online (Sandbox Code Playgroud)

如何解决?

use*_*097 520

你需要添加一个点,例如,docker build -t mytag .这意味着你在本地目录中使用Dockerfile,如果你使用docker 1.5,你可以在其他地方指定一个Dockerfile,从docker build的帮助中提取-f, --file="" Name of the Dockerfile(Default is 'Dockerfile' at context root)

  • 问题流行度显示了docker命令语法的不清楚...我个人认为点意味着句子的结尾...... (18认同)
  • @ user2915097我不同意.(点)表示本地目录,因为当使用-f( - file)选项时,放入.(点)仍然是强制性的. (5认同)
  • 你可以请标记确切的命令:"docker build -t mytag." 没看到圆点 (3认同)
  • 这个.指定构建的上下文 (3认同)
  • 您好:https://docs.docker.com/get-started/part2/#apppy-我太盲目看不到了。那里! (2认同)

Mic*_*son 26

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

我从AWS教程复制了一个构建命令,并将其粘贴到我的终端中,并收到此错误.这让我发疯了.用手输入后,它有效!仔细看看我以前失败的命令,我注意到"破折号"字符是不同的,如果我自己使用"减号/破折号"键输入它,它比我得到的更薄,更长的破折号字符.

坏:

sudo docker build -t foo.

好:

sudo docker build -t foo.

你能看出差异吗?剪切和粘贴很难.


Ric*_* P. 20

如果有人在尝试标记-t图像并从未命名的文件Dockerfile(即不只使用.路径)构建它时遇到此问题,您可以这样做:

docker build -t my_image -f my_dockerfile .

请注意,docker 需要一个目录作为参数,文件名作为一个选项。


aru*_*hpj 15

使用以下命令

docker build -t mytag .
Run Code Online (Sandbox Code Playgroud)

请注意,mytag和dot之间有空格.该点代表当前的工作目录.


Har*_*uet 12

在此输入图像描述只需在命令末尾提供一个点(.),包括一个空格.

例:

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

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

而已.


BMi*_*tch 9

从命令运行:

sudo docker build -t myrepo/redis
Run Code Online (Sandbox Code Playgroud)

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

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

sudo docker build -t myrepo/redis .
Run Code Online (Sandbox Code Playgroud)

构建上下文是什么?

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

docker build -t sudobmitch/base:alpine --target alpine-base \
  'https://github.com/sudo-bmitch/docker-base.git#main'
Run Code Online (Sandbox Code Playgroud)

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

如果你包含一个论点怎么办?

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

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

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

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

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

大多数这些都来自拼写错误或从源复制粘贴,修改文本使其看起来更漂亮,从而破坏了它作为命令的使用。

如何找出 CLI 错误所在?

我必须调试此问题的最简单方法是运行不带任何其他标志的命令:

docker build .
Run Code Online (Sandbox Code Playgroud)

一旦工作正常,重新添加标志直到出现错误,然后您就会知道哪个标志被破坏并且需要修复/添加引号或更正破折号等。


Ali*_*eza 8


你最后需要一个DOT ......


例如:

$ docker build -t <your username>/node-web-app .
Run Code Online (Sandbox Code Playgroud)

它有点隐藏,但如果你注意到.最后......

  • 你救了我的一天。谢谢。 (2认同)

spe*_*.sm 7

在我的情况下,当我将多个Gitlab env变量传递给docker buildwith --build-arg标志时,此错误发生在Gitlab CI管道中。

原来,其中一个变量中有一个空格导致了错误。由于管道日志仅显示,因此很难找到$VARIABLE_NAME

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

更改自:

--build-arg VARIABLE_NAME=$VARIABLE_NAME
Run Code Online (Sandbox Code Playgroud)

至:

--build-arg VARIABLE_NAME="$VARIABLE_NAME"
Run Code Online (Sandbox Code Playgroud)

  • 保存我的谷歌搜索;) (2认同)

Rya*_*n R 5

在旧版本的 Docker 上,您似乎需要使用以下命令:

docker build -t tag .

并不是

docker build . -t tag