Prüfpunkte
Publish your container image to Container Registry
/ 100
Einführung in Docker
GSP055
Übersicht
Docker ist eine offene Plattform zum Entwickeln, Versenden und Ausführen von Anwendungen. Damit können Sie Anwendungen von Ihrer Infrastruktur trennen und diese wie eine verwaltete Anwendung behandeln. Außerdem lässt sich Code schneller versenden, testen und implementieren sowie der Zyklus zwischen dem Schreiben und Ausführen von Code verkürzen.
Zu diesem Zweck kombiniert Docker Funktionen zur Kernel-Containerisierung mit Workflows und Tools, die Ihnen beim Verwalten und Bereitstellen von Anwendungen helfen.
Docker-Container können direkt in Kubernetes verwendet und somit auch ganz einfach in der Kubernetes Engine ausgeführt werden. Sobald Sie die Grundlagen von Docker kennen, können Sie Kubernetes- und Containeranwendungen entwickeln.
Ziele
Aufgaben in diesem Lab:
- Docker-Container erstellen, ausführen und debuggen
- Docker-Images aus Docker Hub und Google Artifact Registry abrufen
- Docker-Images per Push an Google Artifact Registry übertragen
Voraussetzungen
Dies ist ein Einführungs-Lab. Es werden keine oder nur wenige Vorkenntnisse zu Docker und Containern vorausgesetzt. Vorkenntnisse zu Cloud Shell und zur Befehlszeile sind empfehlenswert, aber nicht erforderlich.
Einrichtung und Anforderungen
Vor dem Klick auf „Start Lab“ (Lab starten)
Lesen Sie diese Anleitung. Labs sind zeitlich begrenzt und können nicht pausiert werden. Der Timer beginnt zu laufen, wenn Sie auf Lab starten klicken, und zeigt Ihnen, wie lange die Ressourcen für das Lab verfügbar sind.
In diesem praxisorientierten Lab können Sie die Lab-Aktivitäten in einer echten Cloud-Umgebung selbst durchführen – nicht in einer Simulations- oder Demo-Umgebung. Dazu erhalten Sie neue, temporäre Anmeldedaten, mit denen Sie für die Dauer des Labs auf Google Cloud zugreifen können.
Für dieses Lab benötigen Sie Folgendes:
- Einen Standardbrowser (empfohlen wird Chrome)
- Zeit für die Durchführung des Labs – denken Sie daran, dass Sie ein begonnenes Lab nicht unterbrechen können.
Lab starten und bei der Google Cloud Console anmelden
-
Klicken Sie auf Lab starten. Wenn Sie für das Lab bezahlen müssen, wird ein Pop-up-Fenster geöffnet, in dem Sie Ihre Zahlungsmethode auswählen können. Auf der linken Seite befindet sich der Bereich Details zum Lab mit diesen Informationen:
- Schaltfläche Google Cloud Console öffnen
- Restzeit
- Temporäre Anmeldedaten für das Lab
- Ggf. weitere Informationen für dieses Lab
-
Klicken Sie auf Google Cloud Console öffnen (oder klicken Sie mit der rechten Maustaste und wählen Sie Link in Inkognitofenster öffnen aus, wenn Sie Chrome verwenden).
Im Lab werden Ressourcen aktiviert. Anschließend wird ein weiterer Tab mit der Seite Anmelden geöffnet.
Tipp: Ordnen Sie die Tabs nebeneinander in separaten Fenstern an.
Hinweis: Wird das Dialogfeld Konto auswählen angezeigt, klicken Sie auf Anderes Konto verwenden. -
Kopieren Sie bei Bedarf den folgenden Nutzernamen und fügen Sie ihn in das Dialogfeld Anmelden ein.
{{{user_0.username | "Username"}}} Sie finden den Nutzernamen auch im Bereich Details zum Lab.
-
Klicken Sie auf Weiter.
-
Kopieren Sie das folgende Passwort und fügen Sie es in das Dialogfeld Willkommen ein.
{{{user_0.password | "Password"}}} Sie finden das Passwort auch im Bereich Details zum Lab.
-
Klicken Sie auf Weiter.
Wichtig: Sie müssen die für das Lab bereitgestellten Anmeldedaten verwenden. Nutzen Sie nicht die Anmeldedaten Ihres Google Cloud-Kontos. Hinweis: Wenn Sie Ihr eigenes Google Cloud-Konto für dieses Lab nutzen, können zusätzliche Kosten anfallen. -
Klicken Sie sich durch die nachfolgenden Seiten:
- Akzeptieren Sie die Nutzungsbedingungen.
- Fügen Sie keine Wiederherstellungsoptionen oder Zwei-Faktor-Authentifizierung hinzu (da dies nur ein temporäres Konto ist).
- Melden Sie sich nicht für kostenlose Testversionen an.
Nach wenigen Augenblicken wird die Google Cloud Console in diesem Tab geöffnet.
Cloud Shell aktivieren
Cloud Shell ist eine virtuelle Maschine, auf der Entwicklertools installiert sind. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft auf Google Cloud. Mit Cloud Shell erhalten Sie Befehlszeilenzugriff auf Ihre Google Cloud-Ressourcen.
- Klicken Sie oben in der Google Cloud Console auf Cloud Shell aktivieren .
Wenn Sie verbunden sind, sind Sie bereits authentifiziert und das Projekt ist auf Ihre Project_ID,
gcloud
ist das Befehlszeilentool für Google Cloud. Das Tool ist in Cloud Shell vorinstalliert und unterstützt die Tab-Vervollständigung.
- (Optional) Sie können den aktiven Kontonamen mit diesem Befehl auflisten:
- Klicken Sie auf Autorisieren.
Ausgabe:
- (Optional) Sie können die Projekt-ID mit diesem Befehl auflisten:
Ausgabe:
gcloud
finden Sie in Google Cloud in der Übersicht zur gcloud CLI.
Aufgabe 1: Hello World
- Geben Sie in Cloud Shell den folgenden Befehl ein, um für den Einstieg einen „Hello World“-Container auszuführen:
(Befehlsausgabe)
Dieser einfache Container gibt Hello from Docker!
auf dem Bildschirm aus. Dieser Befehl ist zwar einfach, verursacht jedoch die Ausführung mehrerer Schritte, wie Sie in der Ausgabe sehen können. Der Docker-Daemon hat nach einem „Hello World“-Image gesucht, kein lokales gefunden, das Image aus der öffentlichen Registry „Docker Hub“ abgerufen, einen Container aus diesem Image erstellt und den Container ausgeführt.
- Führen Sie den folgenden Befehl aus, um sich das aus Docker Hub abgerufene Container-Image anzeigen zu lassen:
(Befehlsausgabe)
Dies ist das Image aus der öffentlichen Docker Hub Registry. Die Image-ID hat das SHA256-Hash-Format. Dieses Feld gibt das bereitgestellte Docker-Image an. Wenn der Docker-Daemon ein Image lokal nicht finden kann, wird standardmäßig in der öffentlichen Registry nach dem Image gesucht.
- Führen Sie den Container noch einmal aus:
(Befehlsausgabe)
Bei der zweiten Ausführung des Containers findet der Docker-Daemon das Image in der lokalen Registry und führt den Container über dieses Image aus. Das Image muss nicht aus Docker Hub abgerufen werden.
- Lassen Sie sich zum Abschluss die aktiven Container anzeigen, indem Sie den folgenden Befehl ausführen:
(Befehlsausgabe)
Es werden keine Container ausgeführt. Sie haben die zuvor ausgeführten „Hello World“-Container bereits verlassen.
- Um sich alle Container anzeigen zu lassen, einschließlich derjenigen, deren Ausführung abgeschlossen ist, führen Sie den Befehl
docker ps -a
aus:
(Befehlsausgabe)
Diese Ausgabe enthält die Container ID
, eine von Docker generierte UUID zur Identifizierung des Containers, und weitere Metadaten zur Ausführung. Das Element Names
der Container wird ebenfalls zufällig generiert, kann jedoch folgendermaßen angegeben werden: docker run --name [container-name] hello-world
.
Aufgabe 2: Erstellen
In diesem Abschnitt erstellen Sie ein Docker-Image, das auf einer einfachen Knotenanwendung basiert.
- Führen Sie den folgenden Befehl aus, um den Ordner
test
zu erstellen und dorthin zu wechseln.
- So erstellen Sie ein
Dockerfile
:
Diese Datei enthält Anweisungen zur Image-Erstellung für den Docker-Daemon.
- In der ersten Zeile ist das übergeordnete Basis-Image angegeben, bei dem es sich in diesem Fall um das offizielle Docker-Image für die Knotenversion „long term support“ (lts) handelt.
- In der zweiten Zeile wird das (aktuelle) Arbeitsverzeichnis des Containers festgelegt.
- In der dritten Zeile wird dem Container der Inhalt des aktuellen Verzeichnisses (angegeben durch
"."
) hinzugefügt. - In den letzten beiden Zeilen wird der Port des Containers für Verbindungen freigegeben und der Knotenbefehl ausgeführt, um die Anwendung zu starten.
Dockerfile
-Zeilen besser zu verstehen. Nun schreiben Sie die Knotenanwendung und erstellen anschließend das Image.
- Führen Sie den folgenden Befehl aus, um die Knotenanwendung zu erstellen:
Dies ist ein einfacher HTTP-Server, der Port 80 überwacht und „Hello World“ zurückgibt.
Erstellen Sie jetzt das Image.
- Hier wird wieder
"."
als Angabe für das aktuelle Verzeichnis verwendet. Sie müssen diesen Befehl also über das Verzeichnis ausführen, in dem das Dockerfile enthalten ist:
Es kann einige Minuten dauern, bis dieser Befehl ausgeführt ist. Die Ausgabe sollte folgendermaßen aussehen:
Mit dem Flag -t
wird das Image mit der Syntax name:tag
benannt und getaggt. Der Name des Images lautet node-app
und das Tag
ist 0.1
. Das Tag wird beim Erstellen von Docker-Images dringend empfohlen. Wenn Sie kein Tag angeben, wird standardmäßig das Tag latest
angegeben, und es wird schwieriger, neuere Images von älteren Images zu unterscheiden. Beachten Sie auch, dass beim Erstellen des Images durch jede Zeile des oben angegebenen Dockerfile
Container-Zwischenschichten generiert werden.
- Führen Sie nun den folgenden Befehl aus, um sich die erstellten Images anzeigen zu lassen:
Ihre Ausgabe sollte in etwa so aussehen:
Beachten Sie, dass node
das Basis-Image und node-app
das von Ihnen erstellte Image ist. Sie können node
erst entfernen, nachdem Sie node-app
entfernt haben. Die Größe des Images ist im Vergleich zu VMs relativ klein. Andere Versionen des node-Images, wie z. B. node:slim
und node:alpine
, ermöglichen noch kleinere Images für eine bessere Portabilität. Das Thema Reduzierung der Containergrößen wird unter „Erweiterte Themen“ näher behandelt. Sie finden alle im offiziellen Repository enthaltenen Versionen in Docker Hub unter „node“.
Aufgabe 3: Ausführen
- Verwenden Sie den folgenden Code, um Container basierend auf dem erstellten Image auszuführen:
(Befehlsausgabe)
Mit dem Flag --name
können Sie dem Container bei Bedarf einen Namen geben. Mit dem Flag -p
weisen Sie Docker an, Port 4000 des Hosts Port 80 des Containers zuzuordnen. Jetzt können Sie den Server unter http://localhost:4000
erreichen. Ohne Portzuordnung ist das nicht möglich.
- Öffnen Sie ein anderes Terminal, indem Sie in Cloud Shell auf das Plus
+
klicken, und testen Sie den Server:
(Befehlsausgabe)
Solange das ursprüngliche Terminal läuft, wird auch der Container ausgeführt. Wenn der Container im Hintergrund (unabhängig von der Sitzung des Terminals) ausgeführt werden soll, müssen Sie das Flag -d
angeben.
- Schließen Sie das ursprüngliche Terminal und führen Sie dann den folgenden Befehl aus, um den Container zu beenden und zu entfernen:
- Führen Sie nun den folgenden Befehl aus, um den Container im Hintergrund zu starten:
(Befehlsausgabe)
- Der Container wird in der Ausgabe von
docker ps
ausgeführt. Sie können sich die Logs anzeigen lassen, indem Sie den Befehldocker logs [container_id]
ausführen.
docker logs 17b
ausführen, wenn die Container-ID 17bcaca6f....
lautet. (Befehlsausgabe)
Ändern Sie jetzt die Anwendung.
- Öffnen Sie in Cloud Shell das Testverzeichnis, das Sie zuvor im Lab erstellt haben:
- Bearbeiten Sie
app.js
mit einem Texteditor Ihrer Wahl und ersetzen Sie „Hello World“ durch einen anderen String:
- Erstellen Sie dieses neue Image und taggen Sie es mit
0.2
:
(Befehlsausgabe)
Beachten Sie, dass in Schritt 2 ein vorhandener Cache-Layer verwendet wird. Ab Schritt 3 werden die Layer geändert, da Sie eine Änderung in app.js
vorgenommen haben.
- Führen Sie einen anderen Container mit der neuen Image-Version aus. Beachten Sie, dass Port 8080 des Hosts statt Port 80 zugeordnet wird. Port 4000 kann nicht genutzt werden, da er bereits verwendet wird.
(Befehlsausgabe)
- Testen Sie die Container:
(Befehlsausgabe)
- Und jetzt testen Sie den ersten Container, den Sie erstellt haben:
(Befehlsausgabe)
Aufgabe 4: Debuggen
Nachdem Sie sich mit dem Erstellen und Ausführen von Containern vertraut gemacht haben, lernen Sie nun einige Fehlerbehebungsverfahren kennen.
- Sie können die Logs eines Containers mit dem Befehl
docker logs [container_id]
aufrufen. Verwenden Sie die Option-f
, um sich die Ausgabe eines Logs anzeigen zu lassen, während der Container ausgeführt wird.
(Befehlsausgabe)
In einigen Fällen kann es erforderlich sein, eine interaktive Bash-Sitzung in einem ausgeführten Container zu starten.
- Sie können zu diesem Zweck
docker exec
verwenden. Öffnen Sie ein anderes Terminal, indem Sie in Cloud Shell auf das Plus + klicken, und geben Sie den folgenden Befehl ein:
Mit den -it
-Flags können Sie mit einem Container interagieren, indem Sie ein „pseudo-tty“ zuordnen und „stdin“ offenlassen. Beachten Sie, dass „bash“ im WORKDIR
-Verzeichnis (/app) ausgeführt wurde, das im Dockerfile
angegeben ist. Ab hier haben Sie für die Fehlerbehebung eine interaktive Shell-Sitzung innerhalb des Containers.
(Befehlsausgabe)
- Sehen Sie sich mit folgendem Befehl das Verzeichnis an:
(Befehlsausgabe)
- Beenden Sie die Bash-Sitzung:
- Sie können die Metadaten eines Containers in Docker mit dem Befehl „docker inspect“ überprüfen:
(Befehlsausgabe)
- Verwenden Sie
--format
, um bestimmte Felder in der zurückgegebenen JSON-Datei zu überprüfen. Beispiele:
(Ausgabebeispiel)
Weitere Informationen zum Debugging finden Sie in den folgenden Artikeln der Docker-Dokumentation:
Aufgabe 5: Veröffentlichen
Nun übertragen Sie das Image per Push an Google Artifact Registry. Danach entfernen Sie alle Container und Images, um eine neue Umgebung zu simulieren. Anschließend rufen Sie Ihre Container ab und führen sie aus. Das veranschaulicht die Portabilität von Docker-Containern.
Images, die Sie in Ihre von Artifact Registry gehostete private Registry übertragen möchten, müssen Sie mit einem Registry-Namen taggen. Das Format dafür ist <regional-repository>-docker.pkg.dev/my-project/my-repo/my-image
.
Docker-Ziel-Repository mit der Cloud Console erstellen
Sie müssen ein Repository erstellen, bevor Sie Images per Push übertragen können. Durch das Übertragen eines Images kann die Erstellung eines Repositorys nicht ausgelöst werden und das Cloud Build-Dienstkonto verfügt nicht über die Berechtigungen zum Erstellen von Repositories.
-
Klicken Sie im Navigationsmenü unter „CI/CD“ auf Artifact Registry > Repositories.
-
Klicken Sie auf +REPOSITORY ERSTELLEN neben den Repositories.
-
Geben Sie
my-repository
als Repository-Name an. -
Wählen Sie Docker als Format aus.
-
Wählen Sie unter „Standorttyp“ die Option Region und dann den Standort
aus. -
Klicken Sie auf Erstellen.
Authentifizierung konfigurieren
Bevor Sie Images hoch‑ oder herunterladen können, müssen Sie Docker so konfigurieren, dass die Google Cloud CLI zum Authentifizieren von Anfragen an Artifact Registry verwendet wird.
- Führen Sie den folgenden Befehl in Cloud Shell aus, um die Authentifizierung bei Docker-Repositories in der Region
einzurichten:
- Geben Sie
Y
ein, wenn Sie dazu aufgefordert werden.
Durch den Befehl wird die Docker-Konfiguration aktualisiert. Sie können jetzt eine Verbindung zu Artifact Registry in Ihrem Google Cloud-Projekt herstellen, um Images hoch‑ oder herunterzuladen.
Artifact Registry-Repository mit der Befehlszeile erstellen
- Führen Sie die folgenden Befehle aus, um ein Artifact-Repository zu erstellen.
Container per Push an Artifact Registry übertragen
- Wechseln Sie in das Verzeichnis mit dem Dockerfile.
- Führen Sie den Befehl zum Taggen von
node-app:0.2
aus.
- Führen Sie den folgenden Befehl aus, um die erstellten Docker-Images zu prüfen.
(Befehlsausgabe)
- Übertragen Sie dieses Image an Artifact Registry.
Befehlsausgabe (Ihre kann abweichen):
-
Klicken Sie nach Abschluss der Übertragung im Navigationsmenü unter „CI/CD“ auf Artifact Registry > Repositories.
-
Klicken Sie auf my-repository. Der Docker-Container
node-app
sollte angezeigt werden:
Image testen
Starten Sie eine neue VM, stellen Sie eine SSH-Verbindung zu ihr her und installieren Sie gcloud. Entfernen Sie einfach alle Container und Images, um eine neue Umgebung zu simulieren.
- Beenden und entfernen Sie alle Container:
Sie müssen zuerst die untergeordneten Images (von node:lts
) entfernen, um das node-Image entfernen zu können.
- Führen Sie den folgenden Befehl aus, um alle Docker-Images zu entfernen.
(Befehlsausgabe)
Sie haben nun eine „neue“ Umgebung erstellt.
- Rufen Sie das Image ab und führen Sie es aus.
- Führen Sie einen curl-Befehl für den ausgeführten Container aus.
(Befehlsausgabe)
Abgeschlossene Aufgabe testen
Klicken Sie auf Fortschritt prüfen. Wenn Sie erfolgreich ein Container-Image in Artifact Registry veröffentlicht haben, wird ein Testergebnis angezeigt.
Hier wird die Übertragbarkeit von Docker-Containern veranschaulicht. Solange Docker auf dem Host (entweder lokal oder auf einer VM) installiert ist, können Images von öffentlichen oder privaten Registrys abgerufen und Container basierend auf diesem Image ausgeführt werden. Außer für Docker gibt es keine Anwendungsabhängigkeiten, die auf dem Host installiert werden müssen.
Glückwunsch!
Das war's auch schon! In diesem Lab haben Sie verschiedene praktische Aktivitäten ausgeführt und unter anderem Container basierend auf öffentlichen Images aus Docker Hub ausgeführt. Außerdem haben Sie selbst Container-Images erstellt und diese per Push an Google Artifact Registry übertragen. In diesem Lab haben Sie auch gelernt, wie Sie ausgeführte Container effektiv debuggen. Darüber hinaus haben Sie erfahren, wie Sie Container basierend auf Images ausführen, die aus Google Artifact Registry abgerufen werden. Sie kennen sich also jetzt besser mit Docker aus.
Weitere Informationen
Google Cloud-Schulungen und -Zertifizierungen
In unseren Schulungen erfahren Sie alles zum optimalen Einsatz unserer Google Cloud-Technologien und können sich entsprechend zertifizieren lassen. Unsere Kurse vermitteln technische Fähigkeiten und Best Practices, damit Sie möglichst schnell mit Google Cloud loslegen und Ihr Wissen fortlaufend erweitern können. Wir bieten On-Demand-, Präsenz- und virtuelle Schulungen für Anfänger wie Fortgeschrittene an, die Sie individuell in Ihrem eigenen Zeitplan absolvieren können. Mit unseren Zertifizierungen weisen Sie nach, dass Sie Experte im Bereich Google Cloud-Technologien sind.
Anleitung zuletzt am 29. Februar 2024 aktualisiert
Lab zuletzt am 29. Februar 2024 getestet
© 2024 Google LLC. Alle Rechte vorbehalten. Google und das Google-Logo sind Marken von Google LLC. Alle anderen Unternehmens- und Produktnamen können Marken der jeweils mit ihnen verbundenen Unternehmen sein.