Verwendung von docker container create zur Vorbereitung von Containern

DockerDockerBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie den Befehl docker create verwenden, um Docker-Container vorzubereiten, ohne sie sofort zu starten. Dies ermöglicht es Ihnen, Container und Volumes vor der Ausführung zu konfigurieren. Sie beginnen mit der Erstellung eines Containers aus dem Ubuntu-Image, überprüfen seinen Erstellungsstatus und starten sowie verbinden sich anschließend mit dem erstellten Container.

Darüber hinaus werden Sie untersuchen, wie Sie ein Volume mit docker create initialisieren und dieses initialisierte Volume anschließend in einem anderen Container nutzen. Diese praktische Übung demonstriert die Flexibilität und Kontrolle, die der Befehl docker create bei der Verwaltung des Container-Lebenszyklus und der Datenpersistenz bietet.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/VolumeOperationsGroup(["Volume Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/start("Start Container") docker/ContainerOperationsGroup -.-> docker/attach("Attach to Container") docker/ContainerOperationsGroup -.-> docker/create("Create Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/ImageOperationsGroup -.-> docker/images("List Images") docker/VolumeOperationsGroup -.-> docker/volume("Manage Volumes") subgraph Lab Skills docker/run -.-> lab-555106{{"Verwendung von docker container create zur Vorbereitung von Containern"}} docker/ls -.-> lab-555106{{"Verwendung von docker container create zur Vorbereitung von Containern"}} docker/ps -.-> lab-555106{{"Verwendung von docker container create zur Vorbereitung von Containern"}} docker/start -.-> lab-555106{{"Verwendung von docker container create zur Vorbereitung von Containern"}} docker/attach -.-> lab-555106{{"Verwendung von docker container create zur Vorbereitung von Containern"}} docker/create -.-> lab-555106{{"Verwendung von docker container create zur Vorbereitung von Containern"}} docker/pull -.-> lab-555106{{"Verwendung von docker container create zur Vorbereitung von Containern"}} docker/images -.-> lab-555106{{"Verwendung von docker container create zur Vorbereitung von Containern"}} docker/volume -.-> lab-555106{{"Verwendung von docker container create zur Vorbereitung von Containern"}} end

Einen Container erstellen ohne ihn zu starten

In diesem Schritt lernen Sie, wie Sie einen Docker-Container erstellen, ohne ihn sofort zu starten. Dies ist nützlich, wenn Sie die Konfiguration oder Volumes des Containers vor dem Ausführen einrichten möchten.

Zuerst laden wir das ubuntu-Image von Docker Hub. Dieses Image wird verwendet, um unseren Container zu erstellen.

docker pull ubuntu:latest

Sie sollten eine Ausgabe sehen, die anzeigt, dass das Image heruntergeladen wird. Sobald der Download abgeschlossen ist, können Sie überprüfen, ob das Image lokal verfügbar ist, indem Sie die Images auflisten.

docker images

Nun erstellen wir einen Container namens my-ubuntu-container aus dem ubuntu-Image. Dafür verwenden wir den Befehl docker create. Die Flags -it werden typischerweise für interaktive Container verwendet, aber docker create richtet nur den Container ein, ohne ihn zu starten. Wir fügen sie hier der Konsistenz halber hinzu, da Sie den Container später möglicherweise auf diese Weise ausführen.

docker create -it --name my-ubuntu-container ubuntu:latest

Der Befehl docker create erstellt eine beschreibbare Container-Schicht über dem angegebenen Image und bereitet sie für die Ausführung des angegebenen Befehls vor. Er startet den Container jedoch nicht. Sie sollten eine lange Zeichenkette als Ausgabe sehen, die die Container-ID darstellt.

Um zu überprüfen, ob der Container erstellt wurde, aber nicht läuft, können Sie alle Container auflisten, einschließlich der gestoppten.

docker ps -a

In der Ausgabe sollten Sie einen Container namens my-ubuntu-container mit dem Status Created sehen. Dies bestätigt, dass der Container erfolgreich erstellt wurde, aber noch nicht läuft.

Den erstellten Container starten und an ihn anbinden

Im vorherigen Schritt haben Sie einen Docker-Container namens my-ubuntu-container erstellt, ihn aber nicht gestartet. In diesem Schritt lernen Sie, wie Sie diesen erstellten Container starten und Ihr Terminal an seine Standard-Ein-/Ausgabe- und Fehlerströme anbinden können.

Um den Container zu starten, verwenden Sie den Befehl docker start gefolgt vom Containernamen.

docker start my-ubuntu-container

Dieser Befehl startet den Container. Standardmäßig läuft er jedoch im Hintergrund. Um mit dem Container zu interagieren, müssen Sie sich an ihn anbinden.

Um sich an den laufenden Container anzubinden, verwenden Sie den Befehl docker attach gefolgt vom Containernamen.

docker attach my-ubuntu-container

Nach Ausführung dieses Befehls wird Ihr Terminal mit der Shell des Containers verbunden. Sie sollten eine Eingabeaufforderung sehen, die der innerhalb des Ubuntu-Containers ähnelt, typischerweise in der Form root@<container-id>:/#.

Nun, da Sie sich im Container befinden, können Sie Befehle darin ausführen. Lassen Sie uns beispielsweise die Betriebssystemversion überprüfen.

lsb_release -a

Sie sollten eine Ausgabe sehen, die die im Container laufende Ubuntu-Version anzeigt.

Um den Container zu verlassen, ohne ihn zu stoppen, drücken Sie Strg + P gefolgt von Strg + Q. Dies trennt Ihr Terminal vom Container, lässt den Container jedoch im Hintergrund weiterlaufen.

Wenn Sie einfach exit eingeben oder Strg + D drücken während Sie angehängt sind, wird der Container gestoppt.

Nach dem Abkoppeln können Sie überprüfen, ob der Container noch läuft, indem Sie die laufenden Container auflisten.

docker ps

Sie sollten my-ubuntu-container in der Liste sehen mit einem Status, der anzeigt, dass er läuft.

Ein Volume mit docker create initialisieren

In diesem Schritt lernen Sie, wie Sie ein Docker-Volume mit dem Befehl docker create initialisieren. Diese Methode ermöglicht es Ihnen, einen Container speziell zum Befüllen eines Volumes mit Initialdaten aus dem Container-Image zu erstellen.

Zuerst erstellen wir einen neuen Container namens volume-initializer aus dem ubuntu-Image. Dieser Container wird temporär zur Initialisierung des Volumes verwendet. Wir nutzen das Flag -v, um das zu initialisierende Volume und seinen Mount-Point im Container anzugeben. Wir nennen das Volume my-initialized-volume und mounten es im Container unter /app_data.

docker create -v my-initialized-volume:/app_data --name volume-initializer ubuntu:latest

Dieser Befehl erstellt den Container und das Volume, falls es noch nicht existiert. Der Teil -v my-initialized-volume:/app_data weist Docker an, ein Volume namens my-initialized-volume zu erstellen und es im Container unter dem Verzeichnis /app_data einzubinden.

Nun starten wir diesen Container. Wenn ein Container mit Volume zum ersten Mal gestartet wird und das Volume leer ist, kopiert Docker die Inhalte des durch den Mount-Point angegebenen Verzeichnisses aus dem Image in das Volume.

docker start volume-initializer

Da dieser Container nur zur Initialisierung dient und keinen langlebigen Prozess hat, wird er wahrscheinlich starten und sofort wieder stoppen.

Sie können überprüfen, ob der Container gestoppt wurde, indem Sie alle Container auflisten.

docker ps -a

Sie sollten volume-initializer mit dem Status Exited sehen.

Um zu bestätigen, dass das Volume my-initialized-volume erstellt wurde, können Sie alle Docker-Volumes auflisten.

docker volume ls

Sie sollten my-initialized-volume in der Liste der Volumes sehen.

An diesem Punkt enthält das Volume my-initialized-volume die Initialdaten, die im /app_data-Verzeichnis des ubuntu:latest-Images vorhanden waren.

Ein mit docker create initialisiertes Volume in einem anderen Container verwenden

Im vorherigen Schritt haben Sie ein Docker-Volume namens my-initialized-volume durch Erstellung und Start eines temporären Containers initialisiert. Nun lernen Sie, wie Sie dieses initialisierte Volume in einem anderen Container verwenden können. Dies demonstriert, wie Volumes Daten persistieren und zwischen Containern geteilt werden können.

Zuerst erstellen wir einen neuen Container namens data-consumer aus dem ubuntu-Image. Diesmal werden wir den Container direkt ausführen und das bestehende my-initialized-volume im neuen Container unter /data einbinden.

docker run -it --name data-consumer -v my-initialized-volume:/data ubuntu:latest /bin/bash

Lassen Sie uns diesen Befehl aufschlüsseln:

  • docker run: Dieser Befehl erstellt und startet einen neuen Container
  • -it: Diese Flags weisen ein pseudo-TTY zu und halten stdin offen, was interaktive Nutzung ermöglicht
  • --name data-consumer: Weist dem neuen Container den Namen data-consumer zu
  • -v my-initialized-volume:/data: Der entscheidende Teil. Bindet das bestehende Volume my-initialized-volume im Container unter /data ein
  • ubuntu:latest: Spezifiziert das zu verwendende Image
  • /bin/bash: Der im Container auszuführende Befehl, der eine Bash-Shell startet

Nach Ausführung dieses Befehls sind Sie mit der Bash-Shell im data-consumer-Container verbunden.

Nun, da Sie sich im data-consumer-Container befinden, navigieren Sie zum /data-Verzeichnis, wo das my-initialized-volume eingebunden ist.

cd /data

Sie können nun den Inhalt dieses Verzeichnisses auflisten, um die im vorherigen Schritt initialisierten Daten zu sehen. Der genaue Inhalt hängt davon ab, was sich im /app_data-Verzeichnis des ubuntu:latest-Images befand, als das Volume initialisiert wurde.

ls -l

Sie sollten Dateien und Verzeichnisse sehen, die aus dem /app_data-Verzeichnis des Ubuntu-Images in das my-initialized-volume kopiert wurden. Dies bestätigt, dass das Volume erfolgreich initialisiert wurde und nun von diesem neuen Container genutzt wird.

Um den data-consumer-Container zu verlassen, geben Sie einfach exit ein.

exit

Dies stoppt den data-consumer-Container und bringt Sie zurück zum Terminal Ihres Host-Systems.

Sie können überprüfen, dass der data-consumer-Container beendet wurde, indem Sie alle Container auflisten.

docker ps -a

Sie sollten data-consumer mit dem Status Exited sehen. Das my-initialized-volume existiert weiterhin und behält die Daten.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie den Befehl docker create verwenden, um einen Docker-Container vorzubereiten, ohne ihn sofort zu starten. Dies umfasste das Herunterladen eines Images, das Erstellen eines Containers aus diesem Image mit docker create und die Überprüfung seines "Created"-Status. Anschließend haben Sie gelernt, wie Sie den erstellten Container starten und sich mit ihm verbinden, was die Trennung zwischen Container-Erstellung und -Ausführung verdeutlicht.

Darüber hinaus behandelte das Lab die Initialisierung eines Docker-Volumes mit docker create und die anschließende Verwendung dieses initialisierten Volumes in einem anderen Container. Dies veranschaulichte, wie docker create zum Einrichten von Infrastrukturkomponenten wie Volumes verwendet werden kann, bevor sie von laufenden Containern eingebunden und genutzt werden.