web-dev-qa-db-de.com

Wie führe ich eine Docker-Instanz aus einer DockerFile aus?

Ich fand schließlich heraus, wie man Docker zum Laufen bringt.

docker run --name my-forum-nodebb --link my-forum-redis:redis -p 80:80 -p 443:443 -p 4567:4567 -P -t -i nodebb/docker:ubuntu

Ich habe es mit einer Redis-Instanz verknüpft, cool.

Dies ist von Grund auf neu und ich gehe davon aus, dass ich bei der Erstellung der Redis-Instanz

docker run --name my-forum-redis -d -p 6379:6379 nodebb/docker:ubuntu-redis

es zieht das Bild von einem Remote-Repo?

NodeBB bietet ein Dockerfilehttps://github.com/NodeBB/NodeBB/blob/master/Dockerfile Ich bin mir nicht ganz sicher, wie ich es verwenden soll. Ich gehe davon aus, dass ich irgendwie eine lokale Umgebung erstellen kann, indem ich dieses Dockerfile auf meiner Fernbedienung aufrufe.

Ist das richtig? Wenn ja, wie kann ich die lokale Instanz erstellen, die auf die entfernte Instanz verweist?

39

Laden Sie die Datei herunter und führen Sie aus demselben Verzeichnis docker build -t <nodebb> . Aus.

Dadurch erhalten Sie ein Bild auf Ihrem lokalen Computer mit dem Namen nodebb, von dem aus Sie einen Container mit docker run -d nodebb Starten können.

51

Sie können einen Container nicht von einer Docker-Datei aus starten.

Der Prozess läuft wie folgt ab:

Dockerfile = [docker build] => Docker-Image = [docker run] => Docker-Container

Um einen Container zu starten (oder auszuführen), benötigen Sie ein Bild. Um ein Image zu erstellen, müssen Sie das Dockerfile erstellen [1].

[1]: du kannst auch docker import ein Bild aus einem Archiv oder noch einmal docker load.

26
Auzias

Die obigen Antworten waren zwar brauchbar, aber das hat mir sehr geholfen, und deshalb setze ich sie auch hier ein.

Von die Dokumentation :

Anstatt einen Kontext anzugeben, können Sie eine einzelne Docker-Datei in der URL übergeben oder die Datei über STDIN weiterleiten. So leiten Sie ein Dockerfile von STDIN weiter:

$ docker build - < Dockerfile

Mit Powershell unter Windows können Sie Folgendes ausführen:

Get-Content Dockerfile | docker build -

Führen Sie nach Abschluss des Builds den folgenden Befehl aus:

docker image ls

Sie werden so etwas sehen:

REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
<none>                     <none>              123456789        39 seconds ago      422MB

Kopieren Sie Ihre tatsächliche IMAGE ID und führen Sie dann aus

docker run 123456789

Wobei die Zahl am Ende die tatsächliche Bild-ID aus dem vorherigen Schritt ist

Wenn Sie sich die Bild-ID nicht merken möchten, können Sie Ihr Bild mit einem Tag versehen

docker tag 123456789 pavel/pavel-build

Welches markiert dein Bild als pavel/pavel-build

8
Pavel Janicek