Docker: "Build" erfordert 1 Argument. Siehe 'Docker Build - Hilfe'

315

Versuchen Sie, die Anweisungen zum Erstellen eines Docker-Images auf der Docker-Website zu befolgen.

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

Dies ist der Fehler, den ich erhalte, wenn ich den Anweisungen im Dokument folge und diese Docker-Datei verwende

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'.

Wie lösen?

Tampa
quelle

Antworten:

655

Sie müssen einen Punkt hinzufügen. docker build -t mytag .Dies bedeutet beispielsweise , dass Sie die Docker-Datei im lokalen Verzeichnis verwenden. Wenn Sie Docker 1.5 verwenden, können Sie eine Docker-Datei an anderer Stelle angeben und aus der Hilfe des Docker-Builds extrahieren-f, --file="" Name of the Dockerfile(Default is 'Dockerfile' at context root)

user2915097
quelle
3
Könnten Sie bitte den genauen Befehl markieren: "docker build -t mytag". habe den Punkt nicht gesehen
nekperu15739
6
@ user2915097 Dem stimme ich nicht zu. (Punkt) bedeutet lokales Verzeichnis, da bei Verwendung der Option -f (--file) das. (Punkt) ist weiterhin obligatorisch.
Andolsi zied
5
das . gibt den Kontext des
Builds an
33
Die Popularität der Frage zeigt, wie unklar die Syntax von Docker-Befehlen ist ... Persönlich dachte ich, dass Punkt nur das Ende des Satzes bedeutet ...
Enttäuscht
2
Hallo von docs.docker.com/get-started/part2/#apppy - Ich war zu blind, um das zu sehen. da auch!
Alex Jansen
31

Haben Sie den Build-Befehl von einer anderen Stelle (Webseite oder einer anderen Datei) kopiert? Versuchen Sie es von Grund auf neu einzugeben.

Ich habe einen Build-Befehl aus einem AWS-Tutorial kopiert und in mein Terminal eingefügt und habe diesen Fehler erhalten. Es hat mich verrückt gemacht. Nachdem Sie es von Hand eingegeben haben, hat es funktioniert! Bei näherer Betrachtung und meinen vorherigen fehlgeschlagenen Befehlen bemerkte ich, dass das "Bindestrich" -Zeichen anders war. Es war ein dünneres, längeres Bindestrich-Zeichen als ich es bekam, wenn ich es selbst mit der "Minus / Bindestrich" -Taste tippte.

Schlecht:

sudo docker build –t foo.

Gut:

sudo docker build -t foo.

Kannst du den Unterschied sehen? .. Ausschneiden und Einfügen ist schwer.

Michael Peterson
quelle
21

Verwenden Sie den folgenden Befehl

docker build -t mytag .

Beachten Sie, dass zwischen mytag und dot ein Leerzeichen steht. Dieser Punkt repräsentiert das aktuelle Arbeitsverzeichnis.

arunprakashpj
quelle
17

Geben Sie hier die Bildbeschreibung einGeben Sie am Ende des Befehls einfach einen Punkt (.) Ein, der ein Leerzeichen enthält.

Beispiel:

Befehl: Docker Build -t "blinken: v1".

Hier sehen Sie "blinken: v1", dann ein Leerzeichen, dann Punkt (.)

Das ist es.

Harunduet
quelle
16

In meinem Fall trat dieser Fehler in einer Gitlab CI-Pipeline auf, als ich mehrere Gitlab-Umgebungsvariablen docker buildmit --build-argFlags übergab .

Es stellte sich heraus, dass eine der Variablen ein Leerzeichen enthielt, das den Fehler verursachte. Es war schwer zu finden, da die Pipeline-Protokolle nur das zeigten $VARIABLE_NAME.

Stellen Sie sicher, dass Sie die Umgebungsvariablen in Anführungszeichen setzen, damit Leerzeichen korrekt behandelt werden.

Wechsel von:

--build-arg VARIABLE_NAME=$VARIABLE_NAME

zu:

--build-arg VARIABLE_NAME="$VARIABLE_NAME"
spencer.sm
quelle
1
rette mein googeln;)
Adiii
Dies war genau das Problem, das ich hatte. Vielen Dank!
Phi
10


Du brauchst einen Punkt am Ende ...


Also zum Beispiel:

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

Es ist ein bisschen versteckt, aber wenn Sie auf das .am Ende achten ...

Alireza
quelle
1
Du hast meinen Tag gerettet. Danke.
PhatHV
3

Sie können ein Docker-Image aus einer Datei namens Docker-Datei mit dem Namen Dockerfile erstellen. Es enthält eine Reihe von Befehlen / Anweisungen, die Sie in Ihrem Docker-Container benötigen. Der folgende Befehl erstellt ein Bild mit dem neuesten Tag. Dockerfile sollte an diesem Speicherort vorhanden sein (. Bedeutet "Direcotry vorhanden").

docker build . -t <image_name>:latest

Sie können die Docker-Datei über -f angeben, wenn der Dateiname nicht standardmäßig (Docker-Datei) Sameple Docker-Dateiinhalt ist.

FROM busybox
RUN echo "hello world"
Vaseem007
quelle
2

In älteren Docker-Versionen müssen Sie anscheinend diese Reihenfolge verwenden:

docker build -t tag .

und nicht

docker build . -t tag

Ryan R.
quelle
1

Öffnen Sie PowerShelland und befolgen Sie diese Anweisungen. Diese Art von Fehler tritt normalerweise in Windows SO auf. Wenn Sie die Befehlserstellung verwenden, benötigen Sie eine Option und einen Pfad.

Es gibt diese Art von Fehler, da Sie keinen Pfad mit Ihrer Docker-Datei angegeben haben.

Versuche dies:

C:\Users\Daniele\app> docker build -t friendlyhello C:\Users\Daniele\app\
  1. Friendlyhello ist der Name, den Sie Ihrem Conteiner zuweisen
  2. C: \ Users \ Daniele \ app \ ist der Pfad, der Ihre Docker-Datei enthält

Wenn Sie ein Tag hinzufügen möchten

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

Falls jemand auf dieses Problem stößt, wenn er versucht, -tdas Bild zu markieren und es auch aus einer Datei zu erstellen, die NICHT benannt ist Dockerfile(dh nicht nur den .Pfad verwendet), können Sie dies folgendermaßen tun:

docker build -t my_image -f my_dockerfile .

Beachten Sie, dass Docker ein Verzeichnis als Parameter und den Dateinamen als Option erwartet.

Ricardo Pedroni
quelle
0

Mein Problem war, dass die Datei Dockerfile.txt in eine ausführbare Unix-Datei konvertiert werden musste. Sobald ich das getan habe, ist dieser Fehler verschwunden.

Möglicherweise müssen Sie den .txt-Teil entfernen, bevor Sie dies tun. Gehen Sie jedoch auf einem Mac zum Terminal und cd in das Verzeichnis, in dem sich Ihre Docker-Datei befindet, und den Typ

chmod +x "Dockerfile"

Anschließend wird Ihre Datei in eine ausführbare Unix-Datei konvertiert, die dann vom Docker-Build-Befehl ausgeführt werden kann.

SlickRemix
quelle
0

Der folgende Befehl hat bei mir funktioniert. Die Docker-Datei wurde im Ordner my-app-master abgelegt.

Docker Build -f My-App-Master / Docker-Datei -t My-App-Master.

user9441950
quelle
-4

Docker Build-Befehlsformat

In Ihrer Powershell: Es gibt diese Art von Fehler, weil Sie keinen Pfad mit Ihrer Docker-Datei angegeben haben.

Versuche dies:

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

Friendlyhello ist der Name, den Sie Ihrem Container zuweisen und die Version hinzufügen. Verwenden Sie einfach : latest

-f C: \ TestDockerApp \ Dockerfile.txt - Sie möchten ein Tag hinzufügen, da der Build-Befehl einen Parameter oder ein Tag benötigt. - Das DockerFile ist ein Textdokument. Fügen Sie daher explizit die Erweiterung .txt hinzu

** Probieren Sie dieses Format aus:

$ docker build -t friendlyhello:latest -f C:\\TestDockerApp\\Dockerfile.txt .**
Adiel Isaacs
quelle
1
Der von Ihnen angegebene Befehl sollte mit demselben Fehler fehlschlagen. Sie müssen einen Build-Kontext als Argument .angeben , häufig ein, um anzugeben, dass das aktuelle Verzeichnis als Build-Kontext an die Docker-Engine gesendet werden soll.
BMitch