尝试按照从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'.
如何解决?
答案 0 :(得分:409)
你需要添加一个点,例如docker build -t mytag .
,这意味着你在本地目录中使用Dockerfile,如果你使用docker 1.5,你可以在其他地方指定一个Dockerfile,从docker build {{1的帮助中提取}}
答案 1 :(得分:23)
您是否从其他地方(网页或其他文件)复制了构建命令?尝试从头开始输入。
我从AWS教程复制了一个构建命令,并将其粘贴到我的终端中,并收到此错误。这让我发疯了。用手输入后,它有效!仔细观察我以前失败的命令,我注意到了" dash"角色是不同的,如果我使用"减号/破折号"我自己输入的字符比我得到的更薄更长。键。
为:
sudo docker build -t foo。
好:
sudo docker build -t foo。
你能看出差异吗?剪切和粘贴很难。
答案 2 :(得分:11)
使用以下命令
docker build -t mytag .
请注意,mytag和dot之间有空格。该点代表当前的工作目录。
答案 3 :(得分:9)
答案 4 :(得分:8)
万一有人在尝试标记-t
图像并从未命名为Dockerfile
的文件中构建图像时(即不仅仅使用.
路径)遇到这种问题),您可以这样做:
docker build -t my_image -f my_dockerfile .
请注意,docker希望将目录作为参数,并将文件名作为选项。
答案 5 :(得分:7)
例如:
$ docker build -t <your username>/node-web-app .
它有点隐藏,但是如果您注意最后的.
...
答案 6 :(得分:1)
在旧版本的Docker上,您似乎需要使用此顺序:
docker build -t tag .
而不是
docker build . -t tag
答案 7 :(得分:1)
您可以从名为docker file的文件(默认情况下名为Dockerfile)构建docker映像。它在Docker容器中具有您需要的一组命令/指令。 下面的命令创建带有最新标签的图像,Dockerfile应该出现在该位置(。表示存在目录)
docker build . -t <image_name>:latest
如果文件名不是默认值,则可以通过-f指定Dockerfile(Dockerfile) Sameple Docker文件内容。
FROM busybox
RUN echo "hello world"
答案 8 :(得分:1)
以下命令对我有用。 Docker文件放置在my-app-master文件夹中。
docker build -f my-app-master / Dockerfile -t my-app-master。
答案 9 :(得分:1)
从命令运行:
sudo docker build -t myrepo/redis
没有传递给docker build
命令的“参数”,只有一个标志-t
和该标志的值。在docker解析命令的所有标志之后,在运行构建时应该剩下一个参数。
该参数是构建上下文。标准命令包括上下文的尾随点:
sudo docker build -t myrepo/redis .
每个docker build都会向构建服务器发送一个目录。 Docker是一个客户端/服务器应用程序,构建在服务器上运行,而不一定在docker命令运行的位置。 Docker将构建上下文用作COPY
和ADD
步骤中使用的文件的源。在当前目录中运行构建时,将为上下文(即当前目录)传递.
。您可以传递一个完全不同的目录,甚至是一个git repo,而docker将使用该目录作为上下文来执行构建,例如:
docker build -t sudobmitch/base:alpine --target alpine-base \
'https://github.com/sudo-bmitch/docker-base.git#main'
有关构建命令的这些选项的更多详细信息,请参见docker build documentation。
如果包含构建上下文的值(通常为.
),但仍然看到此错误消息,则可能传递了多个参数。通常,这是由于无法解析标志,或者是传递带有空格且不带引号的字符串。 Docker看到多个参数的可能原因包括:
在路径或参数周围缺少带引号的引号(请注意使用可能在其中带有空格的变量)
命令中的破折号不正确:请确保手动键入这些破折号,而不是复制并粘贴
引号不正确:智能引号在命令行上不起作用,请手动键入而不是复制和粘贴。
不是空格或不是空格的空格。
所有这些大多数来自错字或复制,并来自将文本修改为看起来漂亮的源代码,并破坏了该文本以用作命令。
我必须调试的最简单方法是运行不带任何其他标志的命令:
docker build .
一旦可行,请重新添加标记,直到出现错误为止,然后您将知道哪个标记已损坏并且需要固定/添加引号或破折号等。
答案 10 :(得分:0)
打开PowerShelland并遵循这些建议。 这种类型的错误在Windows S.O.中是典型的。 使用命令构建时需要选项和路径。
由于您没有为Dockerfile指定路径,因此存在此类错误。
试试这个:
C:\Users\Daniele\app> docker build -t friendlyhello C:\Users\Daniele\app\
如果您想添加标签
C:\Users\Daniele\app> docker build -t friendlyhello:3.0 C:\Users\Daniele\app\
答案 11 :(得分:0)
我的问题是需要将Dockerfile.txt转换为Unix可执行文件。一旦我做到了,那个错误就消失了。
在执行此操作之前,您可能需要删除.txt部分,但在Mac上,请转到终端并cd进入Dockerfile所在的目录和类型
chmod +x "Dockerfile"
然后它将您的文件转换为Unix可执行文件,然后可以通过Docker build命令执行该文件。
答案 12 :(得分:0)
在我的情况下,当我使用docker build
标志将多个Gitlab env变量传递到--build-arg
时,此错误发生在Gitlab CI管道中。
结果证明,其中一个变量中有空格,这导致了错误。由于管道日志仅显示了$VARIABLE_NAME
,因此很难找到。
确保引用环境变量,以便正确处理空格。
更改自:
--build-arg VARIABLE_NAME=$VARIABLE_NAME
收件人:
--build-arg VARIABLE_NAME="$VARIABLE_NAME"
答案 13 :(得分:-2)
Docker构建命令格式
在您的Powershell中: 之所以出现这种类型的错误,是因为您尚未指定Dockerfile的路径。
尝试一下:
$ docker build -t friendlyhello:latest -f C:\\TestDockerApp\\Dockerfile.txt
friendlyhello是您分配给容器并添加版本的名称,只需使用:latest
-f C:\ TestDockerApp \ Dockerfile.txt -您要添加标签,因为build命令需要参数或标签 -DockerFile是一个文本文档,因此明确添加扩展名 .txt
**尝试使用这种格式:
$ docker build -t friendlyhello:latest -f C:\\TestDockerApp\\Dockerfile.txt .**