Einführung
Container verpacken einen Prozess zusammen mit seiner Dateisystemansicht und den Laufzeiteinstellungen. Eine Container-Engine wie Docker kann Images erstellen, Container aus diesen Images starten, Speicher einbinden, Protokolle anzeigen, Befehle innerhalb eines laufenden Containers ausführen und Container entfernen, wenn sie nicht mehr benötigt werden.
In diesem Lab verwenden Sie die Docker-Engine, die bereits in der LabEx-Umgebung verfügbar ist. Um öffentliche Image-Downloads zu vermeiden, erstellt das Lab ein kleines Übungs-Image aus einem zwischengespeicherten lokalen Basis-Image. Sie werden die Engine untersuchen, ein Image erstellen, einen benannten Container mit einem Bind Mount ausführen, Protokolle und generierte Dateien prüfen, einen Befehl im Container ausführen und den laufenden Container anschließend bereinigen.
Die Container-Engine untersuchen
In diesem Schritt bestätigen Sie, dass Docker verfügbar ist, und untersuchen die lokalen Images. Ein Container-Workflow beginnt damit, zu wissen, welche Engine Sie verwenden und welche Images bereits vorhanden sind. Dieses Lab vermeidet öffentliche Downloads durch die Verwendung eines zwischengespeicherten Basis-Images.
Wechseln Sie in das Projektverzeichnis.
cd /home/labex/project
Überprüfen Sie die Docker-Version.
docker --version
Listen Sie die lokalen Images auf.
docker image ls
Sie sollten gcr.io/k8s-minikube/kicbase:v0.0.37 sehen, das vom Lab als lokale Basis für den Build-Prozess verwendet wird.
Ein lokales Image prüfen und erstellen
In diesem Schritt untersuchen Sie das vorbereitete Dockerfile und erstellen ein lokales Image. Ein Image ist eine wiederverwendbare Vorlage für Dateisysteme und Metadaten. Ein Container ist eine laufende Instanz, die aus einem Image erstellt wurde.
Zeigen Sie das Dockerfile an. Die ENTRYPOINT-Zeile ist wichtig, da das zwischengespeicherte Basis-Image einen eigenen Standard-Einstiegspunkt hat. Dieses Lab setzt einen neuen Einstiegspunkt, damit der Container das Übungsskript direkt startet.
cat Dockerfile
Erstellen Sie das Image und versehen Sie es mit dem Tag lfcs-container-demo:1.0. Die Option -t weist einen Namen und ein Tag zu, und der abschließende Punkt . weist Docker an, das aktuelle Verzeichnis als Build-Kontext zu verwenden.
docker build -t lfcs-container-demo:1.0 .
Überprüfen Sie das Image nach erfolgreichem Build.
docker image ls lfcs-container-demo:1.0
Einen benannten Container ausführen
In diesem Schritt führen Sie das Image als detached Container aus. "Detached" bedeutet, dass der Container im Hintergrund läuft. Der Container erhält den Namen lfcs-demo, und ein Bind Mount verbindet /home/labex/project/container-data auf dem Host mit /data innerhalb des Containers.
Starten Sie den Container.
docker run -d --name lfcs-demo -v /home/labex/project/container-data:/data lfcs-container-demo:1.0
Zeigen Sie die Container-ID an.
docker ps -q --filter name=lfcs-demo
Listen Sie laufende Container auf und suchen Sie nach lfcs-demo.
docker ps --filter name=lfcs-demo
Protokolle untersuchen und einen Befehl ausführen
In diesem Schritt untersuchen Sie den laufenden Container. Protokolle zeigen, was der containerisierte Prozess ausgibt. Ein Bind Mount ermöglicht es Ihnen zu überprüfen, ob der Container Daten zurück auf den Host geschrieben hat. docker exec führt einen Befehl innerhalb des laufenden Containers aus.
Geben Sie dem Container einen Moment Zeit, um Protokolle zu schreiben.
sleep 3
Lesen Sie die aktuellen Container-Protokolle.
docker logs --tail 5 lfcs-demo
Überprüfen Sie die Datei, die über den Bind Mount geschrieben wurde.
tail -n 5 container-data/container-output.log
Führen Sie einen Befehl innerhalb des Containers aus, um zu bestätigen, dass die eingebundenen Daten von innen sichtbar sind.
docker exec lfcs-demo sh -c 'test -f /data/container-output.log && echo container-data-visible'
Den Container stoppen und entfernen
In diesem Schritt bereinigen Sie den laufenden Container. Das Stoppen eines Containers beendet dessen Prozess. Das Entfernen eines gestoppten Containers löscht das Container-Objekt, entfernt jedoch nicht das von Ihnen erstellte Image.
Stoppen Sie den Container.
docker stop lfcs-demo
Entfernen Sie den gestoppten Container.
docker rm lfcs-demo
Überprüfen Sie die Bereinigung. docker ps -a listet alle Container auf, einschließlich der gestoppten. Nach dem Entfernen sollte lfcs-demo nicht mehr erscheinen.
docker ps -a --filter name=lfcs-demo
Zusammenfassung
Sie haben einen vollständigen grundlegenden Docker-Workflow geübt: die Engine untersuchen, ein zwischengespeichertes lokales Basis-Image verwenden, ein getaggtes Image erstellen, einen benannten detached Container mit einem Bind Mount ausführen, Protokolle prüfen, einen Befehl im Container ausführen sowie den Container stoppen und entfernen. Dies sind die grundlegenden Container-Operationen, die Sie beherrschen sollten, bevor Sie sich mit tiefergehenden Engine-Konfigurationen oder Orchestrierungsthemen befassen.



