arrow_back

Einführung in Docker

Anmelden Teilnehmen
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Einführung in Docker

Lab 1 Stunde universal_currency_alt 1 Guthabenpunkt show_chart Einsteiger
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP055

Logo: Google Cloud-Labs zum selbstbestimmten Lernen

Ü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)
Hinweis: Nutzen Sie den privaten oder Inkognitomodus, um dieses Lab durchzuführen. So wird verhindert, dass es zu Konflikten zwischen Ihrem persönlichen Konto und dem Teilnehmerkonto kommt und zusätzliche Gebühren für Ihr persönliches Konto erhoben werden.
  • Zeit für die Durchführung des Labs – denken Sie daran, dass Sie ein begonnenes Lab nicht unterbrechen können.
Hinweis: Wenn Sie über ein persönliches Google Cloud-Konto oder -Projekt verfügen, verwenden Sie es nicht für dieses Lab. So werden zusätzliche Kosten für Ihr Konto vermieden.

Lab starten und bei der Google Cloud Console anmelden

  1. 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
  2. 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.
  3. 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.

  4. Klicken Sie auf Weiter.

  5. 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.

  6. 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.
  7. 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.

Hinweis: Wenn Sie sich eine Liste der Google Cloud-Produkte und ‑Dienste ansehen möchten, klicken Sie oben links auf das Navigationsmenü. Symbol für Navigationsmenü

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.

  1. Klicken Sie oben in der Google Cloud Console auf Cloud Shell aktivieren Symbol für Cloud Shell-Aktivierung.

Wenn Sie verbunden sind, sind Sie bereits authentifiziert und das Projekt ist auf Ihre Project_ID, eingestellt. Die Ausgabe enthält eine Zeile, in der die Project_ID für diese Sitzung angegeben ist:

Ihr Cloud-Projekt in dieser Sitzung ist festgelegt als {{{project_0.project_id | "PROJECT_ID"}}}

gcloud ist das Befehlszeilentool für Google Cloud. Das Tool ist in Cloud Shell vorinstalliert und unterstützt die Tab-Vervollständigung.

  1. (Optional) Sie können den aktiven Kontonamen mit diesem Befehl auflisten:
gcloud auth list
  1. Klicken Sie auf Autorisieren.

Ausgabe:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} Um das aktive Konto festzulegen, führen Sie diesen Befehl aus: $ gcloud config set account `ACCOUNT`
  1. (Optional) Sie können die Projekt-ID mit diesem Befehl auflisten:
gcloud config list project

Ausgabe:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} Hinweis: Die vollständige Dokumentation für gcloud finden Sie in Google Cloud in der Übersicht zur gcloud CLI.

Aufgabe 1: Hello World

  1. Geben Sie in Cloud Shell den folgenden Befehl ein, um für den Einstieg einen „Hello World“-Container auszuführen:
docker run hello-world

(Befehlsausgabe)

Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 9db2ca6ccae0: Pull complete Digest: sha256:4b8ff392a12ed9ea17784bd3c9a8b1fa3299cac44aca35a85c90c5e3c7afacdc Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. ...

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.

  1. Führen Sie den folgenden Befehl aus, um sich das aus Docker Hub abgerufene Container-Image anzeigen zu lassen:
docker images

(Befehlsausgabe)

REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest feb5d9fea6a5 14 months ago 13.3kB

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.

  1. Führen Sie den Container noch einmal aus:
docker run hello-world

(Befehlsausgabe)

Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: ...

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.

  1. Lassen Sie sich zum Abschluss die aktiven Container anzeigen, indem Sie den folgenden Befehl ausführen:
docker ps

(Befehlsausgabe)

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

Es werden keine Container ausgeführt. Sie haben die zuvor ausgeführten „Hello World“-Container bereits verlassen.

  1. Um sich alle Container anzeigen zu lassen, einschließlich derjenigen, deren Ausführung abgeschlossen ist, führen Sie den Befehl docker ps -a aus:
docker ps -a

(Befehlsausgabe)

CONTAINER ID IMAGE COMMAND ... NAMES 6027ecba1c39 hello-world "/hello" ... elated_knuth 358d709b8341 hello-world "/hello" ... epic_lewin

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.

  1. Führen Sie den folgenden Befehl aus, um den Ordner test zu erstellen und dorthin zu wechseln.
mkdir test && cd test
  1. So erstellen Sie ein Dockerfile:
cat > Dockerfile <<EOF # Use an official Node runtime as the parent image FROM node:lts # Set the working directory in the container to /app WORKDIR /app # Copy the current directory contents into the container at /app ADD . /app # Make the container's port 80 available to the outside world EXPOSE 80 # Run app.js using node when the container launches CMD ["node", "app.js"] EOF

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.
Hinweis: Lesen Sie das Dokument zu Dockerfile-Befehlen, um die einzelnen Dockerfile-Zeilen besser zu verstehen.

Nun schreiben Sie die Knotenanwendung und erstellen anschließend das Image.

  1. Führen Sie den folgenden Befehl aus, um die Knotenanwendung zu erstellen:
cat > app.js << EOF; const http = require("http"); const hostname = "0.0.0.0"; const port = 80; const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader("Content-Type", "text/plain"); res.end("Hello World\n"); }); server.listen(port, hostname, () => { console.log("Server running at http://%s:%s/", hostname, port); }); process.on("SIGINT", function () { console.log("Caught interrupt signal and will exit"); process.exit(); }); EOF

Dies ist ein einfacher HTTP-Server, der Port 80 überwacht und „Hello World“ zurückgibt.

Erstellen Sie jetzt das Image.

  1. 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:
docker build -t node-app:0.1 .

Es kann einige Minuten dauern, bis dieser Befehl ausgeführt ist. Die Ausgabe sollte folgendermaßen aussehen:

+] Building 0.7s (8/8) FINISHED docker:default => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 397B 0.0s => [internal] load metadata for docker.io/library/node:lts

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.

  1. Führen Sie nun den folgenden Befehl aus, um sich die erstellten Images anzeigen zu lassen:
docker images

Ihre Ausgabe sollte in etwa so aussehen:

REPOSITORY TAG IMAGE ID CREATED SIZE node-app 0.1 f166cd2a9f10 25 seconds ago 656.2 MB node lts 5a767079e3df 15 hours ago 656.2 MB hello-world latest 1815c82652c0 6 days ago 1.84 kB

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

  1. Verwenden Sie den folgenden Code, um Container basierend auf dem erstellten Image auszuführen:
docker run -p 4000:80 --name my-app node-app:0.1

(Befehlsausgabe)

Server running at http://0.0.0.0:80/

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.

  1. Öffnen Sie ein anderes Terminal, indem Sie in Cloud Shell auf das Plus + klicken, und testen Sie den Server:
curl http://localhost:4000

(Befehlsausgabe)

Hello World

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.

  1. Schließen Sie das ursprüngliche Terminal und führen Sie dann den folgenden Befehl aus, um den Container zu beenden und zu entfernen:
docker stop my-app && docker rm my-app
  1. Führen Sie nun den folgenden Befehl aus, um den Container im Hintergrund zu starten:
docker run -p 4000:80 --name my-app -d node-app:0.1 docker ps

(Befehlsausgabe)

CONTAINER ID IMAGE COMMAND CREATED ... NAMES xxxxxxxxxxxx node-app:0.1 "node app.js" 16 seconds ago ... my-app
  1. Der Container wird in der Ausgabe von docker ps ausgeführt. Sie können sich die Logs anzeigen lassen, indem Sie den Befehl docker logs [container_id] ausführen.
Hinweis: Sie müssen nicht die gesamte Container-ID eingeben, wenn die ersten Zeichen den Container eindeutig identifizieren. Beispielsweise können Sie docker logs 17b ausführen, wenn die Container-ID 17bcaca6f.... lautet. docker logs [container_id]

(Befehlsausgabe)

Server running at http://0.0.0.0:80/

Ändern Sie jetzt die Anwendung.

  1. Öffnen Sie in Cloud Shell das Testverzeichnis, das Sie zuvor im Lab erstellt haben:
cd test
  1. Bearbeiten Sie app.js mit einem Texteditor Ihrer Wahl und ersetzen Sie „Hello World“ durch einen anderen String:
.... const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Welcome to Cloud\n'); }); ....
  1. Erstellen Sie dieses neue Image und taggen Sie es mit 0.2:
docker build -t node-app:0.2 .

(Befehlsausgabe)

[+] Building 0.7s (8/8) FINISHED docker:default => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 397B 0.0s => [internal] load metadata for docker.io/library/node:lts 0.5s

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.

  1. 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.
docker run -p 8080:80 --name my-app-2 -d node-app:0.2 docker ps

(Befehlsausgabe)

CONTAINER ID IMAGE COMMAND CREATED xxxxxxxxxxxx node-app:0.2 "node app.js" 53 seconds ago ... xxxxxxxxxxxx node-app:0.1 "node app.js" About an hour ago ...
  1. Testen Sie die Container:
curl http://localhost:8080

(Befehlsausgabe)

Welcome to Cloud
  1. Und jetzt testen Sie den ersten Container, den Sie erstellt haben:
curl http://localhost:4000

(Befehlsausgabe)

Hello World

Aufgabe 4: Debuggen

Nachdem Sie sich mit dem Erstellen und Ausführen von Containern vertraut gemacht haben, lernen Sie nun einige Fehlerbehebungsverfahren kennen.

  1. 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.
docker logs -f [container_id]

(Befehlsausgabe)

Server running at http://0.0.0.0:80/

In einigen Fällen kann es erforderlich sein, eine interaktive Bash-Sitzung in einem ausgeführten Container zu starten.

  1. 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:
docker exec -it [container_id] bash

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)

root@xxxxxxxxxxxx:/app#
  1. Sehen Sie sich mit folgendem Befehl das Verzeichnis an:
ls

(Befehlsausgabe)

Dockerfile app.js
  1. Beenden Sie die Bash-Sitzung:
exit
  1. Sie können die Metadaten eines Containers in Docker mit dem Befehl „docker inspect“ überprüfen:
docker inspect [container_id]

(Befehlsausgabe)

[ { "Id": "xxxxxxxxxxxx....", "Created": "2017-08-07T22:57:49.261726726Z", "Path": "node", "Args": [ "app.js" ], ...
  1. Verwenden Sie --format, um bestimmte Felder in der zurückgegebenen JSON-Datei zu überprüfen. Beispiele:
docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' [container_id]

(Ausgabebeispiel)

192.168.9.3

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.

  1. Klicken Sie im Navigationsmenü unter „CI/CD“ auf Artifact Registry > Repositories.

  2. Klicken Sie auf +REPOSITORY ERSTELLEN neben den Repositories.

  3. Geben Sie my-repository als Repository-Name an.

  4. Wählen Sie Docker als Format aus.

  5. Wählen Sie unter „Standorttyp“ die Option Region und dann den Standort aus.

  6. 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.

  1. Führen Sie den folgenden Befehl in Cloud Shell aus, um die Authentifizierung bei Docker-Repositories in der Region einzurichten:
gcloud auth configure-docker {{{ project_0.default_region | "REGION" }}}-docker.pkg.dev
  1. 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.

Hinweis: Alternativ können Sie die gcloud CLI nutzen, um die Eingabe über die Befehlszeile zu rationalisieren.

Artifact Registry-Repository mit der Befehlszeile erstellen

  1. Führen Sie die folgenden Befehle aus, um ein Artifact-Repository zu erstellen.
gcloud artifacts repositories create my-repository --repository-format=docker --location={{{ project_0.default_region | "REGION" }}} --description="Docker repository" Hinweis: Wenn Sie zum ersten Mal mit Cloud Shell die Google Cloud API aufrufen oder ein Befehlszeilentool verwenden, das Anmeldedaten erfordert (wie die gcloud CLI, bq oder gsutil), wird Ihnen in Cloud Shell das Dialogfeld Cloud Shell autorisieren angezeigt. Klicken Sie auf Autorisieren, damit das Tool Ihre Anmeldedaten für Aufrufe verwenden kann.

Container per Push an Artifact Registry übertragen

  1. Wechseln Sie in das Verzeichnis mit dem Dockerfile.
cd ~/test
  1. Führen Sie den Befehl zum Taggen von node-app:0.2 aus.
docker build -t {{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/{{{ project_0.project_id | "PROJECT_ID" }}}/my-repository/node-app:0.2 .
  1. Führen Sie den folgenden Befehl aus, um die erstellten Docker-Images zu prüfen.
docker images

(Befehlsausgabe)

REPOSITORY TAG IMAGE ID CREATED node-app 0.2 76b3beef845e 22 hours {{{project_0.default_region | "REGION"}}}-....node-app:0.2 0.2 76b3beef845e 22 hours node-app 0.1 f166cd2a9f10 26 hours node lts 5a767079e3df 7 days hello-world latest 1815c82652c0 7 weeks
  1. Übertragen Sie dieses Image an Artifact Registry.
docker push {{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/{{{ project_0.project_id | "PROJECT_ID" }}}/my-repository/node-app:0.2

Befehlsausgabe (Ihre kann abweichen):

The push refers to a repository [{{{project_0.default_region | "REGION"}}}-docker.pkg.dev/{{{project_0.project_id | "PROJECT_ID"}}}/my-repository/node-app:0.2] 057029400a4a: Pushed 342f14cb7e2b: Pushed 903087566d45: Pushed 99dac0782a63: Pushed e6695624484e: Pushed da59b99bbd3b: Pushed 5616a6292c16: Pushed f3ed6cb59ab0: Pushed 654f45ecb7e3: Pushed 2c40c66f7667: Pushed 0.2: digest: sha256:25b8ebd7820515609517ec38dbca9086e1abef3750c0d2aff7f341407c743c46 size: 2419
  1. Klicken Sie nach Abschluss der Übertragung im Navigationsmenü unter „CI/CD“ auf Artifact Registry > Repositories.

  2. Klicken Sie auf my-repository. Der Docker-Container node-app sollte angezeigt werden:

Abschnitt „node-app“ in Artifact Registry

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.

  1. Beenden und entfernen Sie alle Container:
docker stop $(docker ps -q) docker rm $(docker ps -aq)

Sie müssen zuerst die untergeordneten Images (von node:lts) entfernen, um das node-Image entfernen zu können.

  1. Führen Sie den folgenden Befehl aus, um alle Docker-Images zu entfernen.
docker rmi {{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/{{{ project_0.project_id| "PROJECT_ID" }}}/my-repository/node-app:0.2 docker rmi node:lts docker rmi -f $(docker images -aq) # remove remaining images docker images

(Befehlsausgabe)

REPOSITORY TAG IMAGE ID CREATED SIZE

Sie haben nun eine „neue“ Umgebung erstellt.

  1. Rufen Sie das Image ab und führen Sie es aus.
docker run -p 4000:80 -d {{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/{{{ project_0.project_id| "PROJECT_ID" }}}/my-repository/node-app:0.2
  1. Führen Sie einen curl-Befehl für den ausgeführten Container aus.
curl http://localhost:4000

(Befehlsausgabe)

Welcome to Cloud

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.

Container-Image in Artifact Registry veröffentlichen

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.