web-dev-qa-db-ger.com

Docker-Build gibt "Kontext kann nicht vorbereitet werden: Kontext muss ein Verzeichnis sein: / Users / tempUser / git / docker / Dockerfile"

Ich habe ein Dockerfile, das ein Ubuntu Bild erstellen soll. Aber wann immer ich renne

docker build -t ubuntu-test:latest ./Dockerfile

Auf der Konsole wird der folgende Fehler angezeigt

kontext kann nicht vorbereitet werden: Kontext muss ein Verzeichnis sein:/Users/tempUser/git/docker/Dockerfile

Ich bin auf Mac OsX. Ich habe auch versucht, Sudo. Nichts geht.

47
Damien-Amen

Sie müssen stattdessen auf das Verzeichnis zeigen. Sie dürfen die Andockdatei nicht angeben.

docker build -t ubuntu-test:latest . macht Arbeit.

docker build -t ubuntu-test:latest ./Dockerfile macht funktioniert nicht.

73
Damien-Amen

Sie können Docker Build auch mit der Option -f Ausführen

docker build -t ubuntu-test:latest -f Dockerfile.custom .

31
JakubKnejzlik

Um beim Erstellen ein Dockerfile anzugeben, können Sie Folgendes verwenden:

docker build -t ubuntu-test:latest - < /path/to/your/Dockerfile

Aber es wird scheitern, wenn es einen ADD oder COPY Befehl gibt, der vom relativen Pfad abhängt. Es gibt viele Möglichkeiten, ein context für docker build Anzugeben. Weitere Informationen finden Sie unter Dokumentation zur Docker-Erstellung .

14
shizhz

Es ist ganz einfach, wenn Docker Build ausgeführt wird und Docker wissen möchte, wie der Image-Name lautet. Daher müssen wir -t: übergeben. Stellen Sie nun sicher, dass Sie sich in demselben Verzeichnis befinden, in dem Sie Ihre Docker-Datei haben, und führen Sie sie aus

docker build -t <image_name>:<version> . Beispiel docker build -t my_Apache:latest . Angenommen, Sie befinden sich im selben Verzeichnis wie Ihre Docker-Datei. Andernfalls übergeben Sie -f und die Docker-Datei.

docker build -t my_Apache:latest -f ~/Users/documents/myapache/Dockerfile

1
Prashanth

Kontexte verstehen

Das docker build Befehl

Die grundlegende Syntax des Erstellungsbefehls von docker lautet

docker build -t imagename:imagetag context_dir

Der Kontext

Der Kontext ist ein Verzeichnis und bestimmt, was der Docker-Erstellungsprozess sehen wird: Aus Sicht der Docker-Datei kann jede Datei context_dir/mydir/myfile in Ihrem Dateisystem wird /mydir/myfile im Dockerfile und damit während des Buildprozesses.

Die Andockdatei

Wenn die Docker-Datei Dockerfile heißt und im Kontext lebt, wird sie implizit anhand der Namenskonvention gefunden. Das ist schön, denn es bedeutet, dass Sie die Docker-Datei normalerweise sofort in jedem Docker-Container finden können.

Wenn Sie darauf bestehen, einen anderen Namen zu verwenden, sagen Sie "/ tmp/mydockerfile", können Sie -t so was:

docker build -t imagename:imagetag -f /tmp/mydockerfile context_dir

aber dann ist die Docking-Datei nicht im Container oder zumindest schwerer zu finden.

1
Lutz Prechelt

Ich stehe vor dem gleichen Problem. Ich benutze docker version:17.09.0-ce.

Ich folge folgenden Schritten:

  1. Docker-Datei erstellen und Befehle zum Erstellen des Docker-Images hinzugefügt
  2. Gehen Sie in das Verzeichnis, in dem wir Dockfile erstellt haben
  3. führen Sie den folgenden Befehl aus: $ Sudo docker build -t ubuntu-test:latest .

Das Problem wurde behoben und das Image erfolgreich erstellt.

Hinweis: Der Build-Befehl hängt von der Docker-Version sowie der verwendeten Build-Option ab. :)

0
Rajeev Rathor