janela de encaixe: "build" requer 1 argumento. Consulte 'docker build --help'

315

Tentando seguir as instruções para criar uma imagem da janela de encaixe no site da janela de encaixe.

https://docs.docker.com/examples/running_redis_service/

este é o erro que recebo seguindo as instruções no documento e usando este 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'.

Como resolver?

Tampa
fonte

Respostas:

657

É necessário adicionar um ponto, por exemplo docker build -t mytag ., significa que você usa o Dockerfile no diretório local e, se você usa o docker 1.5, pode especificar um Dockerfile em outro lugar, extrair da ajuda da construção do docker-f, --file="" Name of the Dockerfile(Default is 'Dockerfile' at context root)

user2915097
fonte
3
você pode marcar o comando exatamente: "docker build -t mytag". não viu o ponto
nekperu15739 29/05
6
@ user2915097 Não concordo. (ponto) significa diretório local porque, ao usar a opção -f (--file), colocar o. (ponto) ainda é obrigatório.
andolsi zied
5
a . especifica o contexto da construção
andolsi zied
35
Pergunta popularidade mostra como estivador claro sintaxe do comando é ... Pessoalmente eu pensei que meio ponto apenas o fim da frase ...
Desapontado
2
Olá, do docs.docker.com/get-started/part2/#apppy - eu estava cego demais para ver o. lá também!
Alex Jansen
31

Você copiou o comando build de outro lugar (página da web ou outro arquivo)? Tente digitar do zero.

Copiei um comando de construção de um tutorial da AWS e colei no meu terminal e estava recebendo esse erro. Isso estava me deixando louco. Depois de digitar manualmente, funcionou! Olhando mais de perto e meus comandos com falha anteriores, notei que o caractere "traço" era diferente, era um caractere de traço mais fino e mais longo do que o obtido se eu próprio o digitasse usando a tecla "menos / traço".

Ruim:

sudo docker build -t foo.

Boa:

sudo docker build -t foo.

Você pode ver a diferença? .. Recortar e colar é difícil.

Michael Peterson
fonte
22

Use o seguinte comando

docker build -t mytag .

Observe que mytag e dot têm um espaço entre eles. Este ponto representa o diretório de trabalho atual.

arunprakashpj
fonte
17

insira a descrição da imagem aquiBasta fornecer o ponto (.) No final do comando, incluindo um espaço.

exemplo:

comando: docker build -t "pisca: v1".

Aqui você pode ver "piscar: v1", depois um espaço e depois um ponto (.)

É isso aí.

Harunduet
fonte
17

No meu caso, esse erro estava ocorrendo em um pipeline de IC do Gitlab quando eu passava várias variáveis ​​de env do Gitlab para docker buildcom --build-argsinalizadores.

Acontece que uma das variáveis ​​tinha um espaço que estava causando o erro. Era difícil de encontrar, pois os logs do pipeline apenas mostravam o $VARIABLE_NAME.

Certifique-se de citar as variáveis ​​de ambiente para que os espaços sejam manipulados corretamente.

Alterar de:

--build-arg VARIABLE_NAME=$VARIABLE_NAME

para:

--build-arg VARIABLE_NAME="$VARIABLE_NAME"
spencer.sm
fonte
1
salve meu googling;)
Adiii
Este foi exatamente o problema que eu tive. Muito obrigado!
phi
10


Você precisa de um DOT no final ...


Então, por exemplo:

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

Está um pouco escondido, mas se você prestar atenção .no final ...

Alireza
fonte
1
Você salvou meu dia. Te agradece.
PhatHV
3

Você pode criar a imagem do docker a partir de um arquivo chamado docker file e denominado Dockerfile por padrão. Ele possui o conjunto de comandos / instruções que você precisa em seu contêiner de docker. O comando abaixo cria uma imagem com a tag mais recente, o Dockerfile deve apresentar nesse local (. Significa presente direcotry)

docker build . -t <image_name>:latest

Você pode especificar o Dockerfile via -f se o nome do arquivo não for o padrão (Dockerfile) Sameple Docker.

FROM busybox
RUN echo "hello world"
Vaseem007
fonte
2

Nas versões mais antigas do Docker, parece que você precisa usar esta ordem:

docker build -t tag .

e não

docker build . -t tag

Ryan R
fonte
1

Abra o PowerShelland e siga estas instruções. Esse tipo de erro ocorre tipicamente no Windows SO. Quando você usa a compilação de comandos, precisa de uma opção e um caminho.

Existe esse tipo de erro porque você não especificou um caminho com o Dockerfile.

Tente o seguinte:

C:\Users\Daniele\app> docker build -t friendlyhello C:\Users\Daniele\app\
  1. friendlyhello é o nome que você atribui ao seu conteiner
  2. C: \ Users \ Daniele \ app \ é o caminho que contém o seu Dockerfile

se você quiser adicionar uma tag

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

Caso alguém esteja enfrentando esse problema ao tentar marcar -ta imagem e também compilá-la a partir de um arquivo que NÃO é nomeado Dockerfile(ou seja, não use simplesmente o .caminho), você pode fazer o seguinte:

docker build -t my_image -f my_dockerfile .

Observe que a janela de encaixe espera um diretório como o parâmetro e o nome do arquivo como uma opção.

Ricardo Pedroni
fonte
0

Meu problema foi que o Dockerfile.txt precisava ser convertido em um arquivo executável do Unix. Uma vez que fiz isso, esse erro desapareceu.

Pode ser necessário remover a parte .txt antes de fazer isso, mas em um mac, vá para terminal e cd no diretório em que está o Dockerfile e o tipo

chmod +x "Dockerfile"

E, em seguida, ele converterá seu arquivo em um arquivo executável do Unix que poderá ser executado pelo comando de construção do Docker.

SlickRemix
fonte
0

O comando a seguir funcionou para mim. O arquivo do Docker foi colocado na pasta my-app-master.

janela de encaixe build -f my-app-master / Dockerfile -t my-app-master.

user9441950
fonte
-4

Formato de comando de compilação do Docker

No seu PowerShell: existe este tipo de erro porque você não especificou um caminho com o seu Dockerfile.

Tente o seguinte:

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

friendlyhello é o nome que você atribui ao seu contêiner e adiciona a versão, basta usar o :

-f C: \ TestDockerApp \ Dockerfile.txt - você deseja adicionar uma marca porque o comando build precisa de um parâmetro ou marca - O DockerFile é um documento de texto para adicionar explicitamente a extensão .txt

** Tente este formato:

$ docker build -t friendlyhello:latest -f C:\\TestDockerApp\\Dockerfile.txt .**
Adiel Isaacs
fonte
1
O comando que você forneceu deve falhar com o mesmo erro. Você deve incluir um contexto de construção como argumento, geralmente um .para indicar que o diretório atual deve ser enviado ao mecanismo de janela de encaixe como o contexto de construção.
BMitch 30/07/2018