docker: "build" nécessite 1 argument. Voir 'docker build --help'

315

Essayer de suivre les instructions pour créer une image Docker à partir du site Web Docker.

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

c'est l'erreur que j'obtiendrai en suivant les instructions du document et en utilisant ce 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'.

Comment résoudre?

Tampa
la source

Réponses:

657

Vous devez ajouter un point, par exemple, docker build -t mytag .cela signifie que vous utilisez le Dockerfile dans le répertoire local, et si vous utilisez docker 1.5, vous pouvez spécifier un Dockerfile ailleurs, extrait de l'aide de la construction du docker-f, --file="" Name of the Dockerfile(Default is 'Dockerfile' at context root)

user2915097
la source
3
pourriez-vous s'il vous plaît marquer exactement la commande: "docker build -t mytag." n'a pas vu le point
nekperu15739
6
@ user2915097 Je ne suis pas d'accord. (point) signifie répertoire local, car lors de l'utilisation de l'option -f (--file), mettre le. (point) est toujours obligatoire.
andolsi zied
5
les . spécifie le contexte de la construction
andolsi zied
35
La popularité de la question montre à quel point la syntaxe de la commande docker n'est pas claire ... Personnellement, je pensais que le point signifie juste la fin de la phrase ...
Déçu
2
Bonjour de docs.docker.com/get-started/part2/#apppy - j'étais trop aveugle pour voir le. là non plus!
Alex Jansen
31

Avez-vous copié la commande build ailleurs (page Web ou autre fichier)? Essayez de le saisir à partir de zéro.

J'ai copié une commande de génération à partir d'un didacticiel AWS et l'ai collée dans mon terminal et obtenais cette erreur. Cela me rendait fou. Après l'avoir tapé à la main, cela a fonctionné! En regardant de plus près et mes précédentes commandes ayant échoué, j'ai remarqué que le caractère "tiret" était différent, c'était un caractère tiret plus fin et plus long que ce que j'obtenais si je le tapais moi-même en utilisant la touche "moins / tiret".

Mauvais:

sudo docker build –t foo.

Bien:

sudo docker build -t foo.

Pouvez-vous voir la différence? .. Couper et coller est difficile.

Michael Peterson
la source
22

Utilisez la commande suivante

docker build -t mytag .

Notez que mytag et dot ont un espace entre eux. Ce point représente le répertoire de travail actuel.

arunprakashpj
la source
17

entrez la description de l'image iciIndiquez simplement un point (.) À la fin de la commande, y compris un espace.

exemple:

commande: docker build -t "blink: v1".

Ici vous pouvez voir "blink: v1" puis un espace puis un point (.)

C'est tout.

Harunduet
la source
17

Dans mon cas, cette erreur se produisait dans un pipeline Gitlab CI lorsque je passais plusieurs variables env Gitlab docker buildavec des --build-argindicateurs.

Il s'avère que l' une des variables contenait un espace à l'origine de l'erreur. C'était difficile à trouver car les journaux de pipeline montraient juste le $VARIABLE_NAME.

Assurez-vous de citer les variables d'environnement afin que les espaces soient traités correctement.

Changer de:

--build-arg VARIABLE_NAME=$VARIABLE_NAME

à:

--build-arg VARIABLE_NAME="$VARIABLE_NAME"
spencer.sm
la source
1
sauver mon googling;)
Adiii
C'était exactement le problème que j'avais. Merci beaucoup!
phi
10


Vous avez besoin d'un DOT à la fin ...


Ainsi, par exemple:

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

C'est un peu caché, mais si vous faites attention .à la fin ...

Alireza
la source
1
Tu m'as sauvé la journée. Merci.
PhatHV
3

Vous pouvez créer une image Docker à partir d'un fichier appelé fichier Docker et nommé Dockerfile par défaut. Il a un ensemble de commandes / instructions dont vous avez besoin dans votre conteneur Docker. La commande ci-dessous crée une image avec la balise la plus récente, Dockerfile doit être présent à cet emplacement (. Signifie le direcotry actuel)

docker build . -t <image_name>:latest

Vous pouvez spécifier le Dockerfile via -f si le nom de fichier n'est pas le contenu par défaut (Dockerfile) Sameple Docker.

FROM busybox
RUN echo "hello world"
Vaseem007
la source
2

Sur les anciennes versions de Docker, il semble que vous devez utiliser cet ordre:

docker build -t tag .

et pas

docker build . -t tag

Ryan R
la source
1

Ouvrez PowerShelland et suivez ces instructions. Ce type d'erreur est généralement dans Windows SO Lorsque vous utilisez la génération de commandes, vous avez besoin d'une option et d'un chemin d'accès.

Il y a ce type d'erreur car vous n'avez pas spécifié de chemin avec votre Dockerfile.

Essaye ça:

C:\Users\Daniele\app> docker build -t friendlyhello C:\Users\Daniele\app\
  1. friendlyhello est le nom que vous attribuez à votre conteiner
  2. C: \ Users \ Daniele \ app \ est le chemin qui contient votre Dockerfile

si vous souhaitez ajouter une balise

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

Dans le cas où quelqu'un rencontre ce problème en essayant de marquer -tl'image et de la créer à partir d'un fichier qui n'est PAS nommé Dockerfile(c'est-à-dire en n'utilisant pas simplement le .chemin), vous pouvez le faire comme ceci:

docker build -t my_image -f my_dockerfile .

Notez que docker attend un répertoire comme paramètre et le nom de fichier comme option.

Ricardo Pedroni
la source
0

Mon problème était que le Dockerfile.txt devait être converti en un fichier exécutable Unix. Une fois que j'ai fait ça, cette erreur a disparu.

Vous devrez peut-être supprimer la partie .txt avant de le faire, mais sur un Mac, allez dans le terminal et cd dans le répertoire où se trouve votre Dockerfile et le type

chmod +x "Dockerfile"

Et puis il convertira votre fichier en un fichier exécutable Unix qui peut ensuite être exécuté par la commande de construction Docker.

SlickRemix
la source
0

La commande suivante a fonctionné pour moi. Le fichier Docker a été placé dans le dossier my-app-master.

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

user9441950
la source
-4

Docker Build Command Format

Dans votre PowerShell: il y a ce type d'erreur car vous n'avez pas spécifié de chemin avec votre Dockerfile.

Essaye ça:

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

friendlyhello est le nom que vous attribuez à votre conteneur et ajoutez la version, utilisez simplement :

-f C: \ TestDockerApp \ Dockerfile.txt - vous souhaitez ajouter une balise car la commande de génération a besoin d'un paramètre ou d'une balise - Le DockerFile est un document texte, alors ajoutez explicitement l'extension .txt

** Essayez ce format:

$ docker build -t friendlyhello:latest -f C:\\TestDockerApp\\Dockerfile.txt .**
Adiel Isaacs
la source
1
La commande que vous avez fournie doit échouer avec la même erreur. Vous devez inclure un contexte de génération comme argument, souvent un .pour indiquer que le répertoire actuel doit être envoyé au moteur Docker en tant que contexte de génération.
BMitch