docker: "construir" requiere 1 argumento. Ver 'docker build --help'

315

Intentando seguir las instrucciones para construir una imagen de Docker desde el sitio web de Docker.

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

este es el error que recibo siguiendo las instrucciones en el documento y 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'.

¿Cómo resolverlo?

Tampa
fuente

Respuestas:

657

docker build -t mytag .Debe agregar un punto, por ejemplo , significa que usa Dockerfile en el directorio local, y si usa docker 1.5 puede especificar un Dockerfile en otro lugar, extraerlo de la ayuda de Docker Build-f, --file="" Name of the Dockerfile(Default is 'Dockerfile' at context root)

usuario2915097
fuente
3
¿podría marcar el comando exacto: "docker build -t mytag"? no vi el punto
nekperu15739
66
@ user2915097 No estoy de acuerdo con eso. (punto) significa directorio local, porque cuando se usa la opción -f (--file), se coloca el. (punto) sigue siendo obligatorio.
andolsi zied
55
el . especifica el contexto de la compilación
andolsi zied
35
La popularidad de las preguntas muestra cuán poco clara es la sintaxis del comando docker ... Personalmente, pensé que punto significa solo el final de la oración ...
Decepcionado el
2
Hola desde docs.docker.com/get-started/part2/#apppy : estaba demasiado ciego para ver el. allí tampoco!
Alex Jansen
31

¿Copió el comando de compilación desde otro lugar (página web o algún otro archivo)? Intenta escribirlo desde cero.

Copié un comando de compilación de un tutorial de AWS y lo pegué en mi terminal y recibí este error. Me estaba volviendo loco. Después de escribirlo a mano, ¡funcionó! Mirando más de cerca y mis comandos fallidos anteriores, noté que el carácter de "guión" era diferente, era un carácter de guión más delgado y más largo que el que tenía si lo escribía yo mismo usando la tecla "menos / guión".

Malo:

sudo docker build –t foo.

Bueno:

sudo docker build -t foo.

¿Puedes ver la diferencia? ... Cortar y pegar es difícil.

Michael Peterson
fuente
22

Usa el siguiente comando

docker build -t mytag .

Tenga en cuenta que mytag y dot tienen un espacio entre ellos. Este punto representa el directorio de trabajo actual.

arunprakashpj
fuente
17

ingrese la descripción de la imagen aquíSimplemente proporcione un punto (.) Al final del comando, incluido un espacio.

ejemplo:

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

Aquí puede ver "parpadeo: v1", luego un espacio y luego un punto (.)

Eso es.

Harunduet
fuente
17

En mi caso, este error estaba ocurriendo en una tubería de Gitlab CI cuando estaba pasando múltiples variables de env de Gitlab a docker buildcon --build-argbanderas.

Resulta que una de las variables tenía un espacio que estaba causando el error. Era difícil de encontrar ya que los registros de la tubería solo mostraban el $VARIABLE_NAME.

Asegúrese de citar las variables de entorno para que los espacios se manejen correctamente.

Cambiar de:

--build-arg VARIABLE_NAME=$VARIABLE_NAME

a:

--build-arg VARIABLE_NAME="$VARIABLE_NAME"
spencer.sm
fuente
1
save my google
;;
Este fue exactamente el problema que tuve. ¡Muchas gracias!
phi
10


Necesitas un DOT al final ...


Así por ejemplo:

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

Está un poco escondido, pero si prestas atención al .final ...

Alireza
fuente
1
Salvaste mi día. Gracias.
PhatHV
3

Puede crear una imagen de Docker a partir de un archivo llamado Docker File y denominado Dockerfile de forma predeterminada. Tiene un conjunto de comandos / instrucciones que necesita en su contenedor acoplable. El siguiente comando crea la imagen con la etiqueta más reciente, Dockerfile debe presentarse en esa ubicación (. Significa directorio actual)

docker build . -t <image_name>:latest

Puede especificar el Dockerfile a través de -f si el nombre del archivo no es el predeterminado (Dockerfile) Sameple Docker.

FROM busybox
RUN echo "hello world"
Vaseem007
fuente
2

En versiones anteriores de Docker, parece que necesita usar este orden:

docker build -t tag .

y no

docker build . -t tag

Ryan R
fuente
1

Abra PowerShelland y siga estas instrucciones. Este tipo de error es típicamente en Windows SO. Cuando usa el comando build necesita una opción y una ruta.

Existe este tipo de error porque no ha especificado una ruta con su Dockerfile.

Prueba esto:

C:\Users\Daniele\app> docker build -t friendlyhello C:\Users\Daniele\app\
  1. friendlyhello es el nombre que le asignas a tu conteiner
  2. C: \ Users \ Daniele \ app \ es la ruta que contiene su Dockerfile

si quieres agregar una etiqueta

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

En caso de que alguien se encuentre con este problema cuando intente etiquetar -tla imagen y también compilarla desde un archivo que NO tenga nombre Dockerfile(es decir, que no utilice simplemente la .ruta), puede hacerlo así:

docker build -t my_image -f my_dockerfile .

Observe que Docker espera un directorio como parámetro y el nombre de archivo como opción.

Ricardo Pedroni
fuente
0

Mi problema era que Dockerfile.txt necesitaba convertirse en un archivo ejecutable de Unix. Una vez que hice eso, ese error desapareció.

Es posible que deba eliminar la parte .txt antes de hacer esto, pero en una Mac vaya a la terminal y cd en el directorio donde está su Dockerfile y el tipo

chmod +x "Dockerfile"

Y luego convertirá su archivo a un archivo ejecutable de Unix que luego puede ser ejecutado por el comando de compilación Docker.

SlickRemix
fuente
0

El siguiente comando funcionó para mí. El archivo Docker se colocó en la carpeta my-app-master.

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

usuario9441950
fuente
-4

Formato de comando de compilación de Docker

En su PowerShell: Existe este tipo de error porque no ha especificado una ruta con su Dockerfile.

Prueba esto:

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

friendlyhello es el nombre que asigna a su contenedor y agrega la versión, solo use el : último

-f C: \ TestDockerApp \ Dockerfile.txt : desea agregar una etiqueta porque el comando de compilación necesita un parámetro o etiqueta: DockerFile es un documento de texto, por lo tanto, agregue explícitamente la extensión .txt

** Pruebe este formato:

$ docker build -t friendlyhello:latest -f C:\\TestDockerApp\\Dockerfile.txt .**
Adiel Isaacs
fuente
1
El comando que ha proporcionado debe fallar con el mismo error. Debe incluir un contexto de compilación como argumento, a menudo .para indicar que el directorio actual debe enviarse al motor acoplable como contexto de compilación.
BMitch