Wie man ein Docker-Image pullt

DockerDockerBeginner
Jetzt üben

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

Einführung

Docker hat die Art und Weise, wie wir Anwendungen entwickeln, bereitstellen und verwalten, revolutioniert. Das Herzstück dieses Ökosystems sind Docker-Images, die als Bausteine für das Erstellen und Ausführen von containerisierten Anwendungen dienen. In diesem Tutorial führen wir Sie durch den Prozess des Pullens von Docker-Images aus einer Registry, ein entscheidender Schritt, um die Leistungsfähigkeit von Docker für Ihre Projekte zu nutzen.

Am Ende dieses Labs werden Sie in der Lage sein, nach Docker-Images zu suchen, sie von Docker Hub zu pullen und zu verstehen, wie Sie sie in Ihren containerisierten Anwendungen verwenden können.

Docker-Images verstehen

Bevor wir mit dem Pullen von Docker-Images beginnen, ist es wichtig zu verstehen, was Docker-Images sind und wie sie funktionieren.

Was ist ein Docker-Image?

Ein Docker-Image ist ein leichtgewichtiges, eigenständiges Paket, das alles enthält, was zum Ausführen einer Anwendung benötigt wird:

  • Anwendungscode
  • Laufzeitumgebung
  • Bibliotheken und Abhängigkeiten
  • Umgebungsvariablen
  • Konfigurationsdateien

Images sind die Vorlagen, die zum Erstellen von Docker-Containern verwendet werden, welche die laufenden Instanzen dieser Images sind.

Docker Image Repositories

Docker-Images werden in Repositories innerhalb von Registries gespeichert. Die beliebteste öffentliche Registry ist Docker Hub, die Tausende von gebrauchsfertigen Images hostet. Einige wichtige Punkte zu Docker Hub:

  • Es enthält offizielle Images, die von Softwareanbietern gepflegt werden
  • Es hostet von der Community beigesteuerte Images, die von Benutzern erstellt wurden
  • Es ermöglicht Organisationen, private Repositories für proprietäre Images zu haben

Docker Image Benennung

Docker-Images folgen einer spezifischen Benennungskonvention:

[registry/]username/repository:tag

Wobei:

  • registry der Hostname der Registry ist (optional, standardmäßig Docker Hub)
  • username der Docker Hub-Benutzername oder Organisationsname ist
  • repository der Image-Name ist
  • tag die Image-Version ist (optional, standardmäßig "latest")

Zum Beispiel: ubuntu:22.04 oder nginx:latest

Überprüfen Ihrer Docker-Installation

Bevor wir fortfahren, stellen wir sicher, dass Docker ordnungsgemäß auf Ihrem System installiert ist. Öffnen Sie ein Terminal und führen Sie aus:

docker --version

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

Docker version 20.10.21, build baeda1f

Dies bestätigt, dass Docker installiert und einsatzbereit ist.

Im nächsten Schritt suchen und pullen wir unser erstes Docker-Image.

Suchen und Pullen Ihres ersten Docker-Images

Nachdem wir verstanden haben, was Docker-Images sind, lernen wir jetzt, wie man sie findet und von Docker Hub pullt.

Suchen nach Docker-Images

Bevor Sie ein Image pullen, möchten Sie möglicherweise nach verfügbaren Optionen suchen. Verwenden Sie den Befehl docker search, um Images auf Docker Hub zu finden:

docker search ubuntu

Dies zeigt Ihnen eine Liste der Ubuntu-bezogenen Images an, die auf Docker Hub verfügbar sind. Sie sollten eine Ausgabe ähnlich der folgenden sehen:

NAME                             DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
ubuntu                           Ubuntu is a Debian-based Linux operating s...   14938     [OK]
ubuntu-upstart                   Upstart is an event-based replacement for ...   111       [OK]
rastasheep/ubuntu-sshd           Dockerized SSH service, built on top of of...   256                  [OK]
...

Die Spalte OFFICIAL, markiert mit [OK], zeigt Images an, die von Docker oder dem Softwareanbieter gepflegt werden.

Pullen eines Docker-Images

Um ein Docker-Image auf Ihren lokalen Rechner herunterzuladen, verwenden Sie den Befehl docker pull, gefolgt vom Image-Namen:

docker pull ubuntu:22.04

Dieser Befehl pullt das Ubuntu 22.04 Image von Docker Hub. Sie sollten einen Download-Fortschritt ähnlich dem folgenden sehen:

22.04: Pulling from library/ubuntu
2ab09b027e7f: Pull complete
Digest: sha256:2b7412e6465c3c7fc5bb21d3e6f1917c167358449fecac8176c6e496e5c1f05f
Status: Downloaded newer image for ubuntu:22.04
docker.io/library/ubuntu:22.04

Die Ausgabe zeigt, dass Docker einzelne Layer des Images herunterlädt. Jeder Layer repräsentiert eine Reihe von Dateisystemänderungen.

Pullen von Images ohne Tag

Wenn Sie kein Tag angeben, pullt Docker das Image mit dem Tag latest:

docker pull nginx

Dies pullt die neueste Version des Nginx-Webserver-Images:

Using default tag: latest
latest: Pulling from library/nginx
a603fa5e3b41: Pull complete
(...more layers...)
Digest: sha256:f9c305f882a7062db720e582ce619686cbe29742eea6e1db6dcf84b200eec560
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

Pullen von anderen Registries

Standardmäßig lädt docker pull Images von Docker Hub herunter. Um von anderen Registries zu pullen, geben Sie den Hostnamen der Registry an:

docker pull mcr.microsoft.com/dotnet/sdk:6.0

Dieser Befehl pullt das .NET SDK 6.0 Image von der Microsoft Container Registry.

Nachdem Sie nun einige Docker-Images gepullt haben, gehen wir zum nächsten Schritt über, um zu lernen, wie man sie verwaltet.

Verwalten von Docker-Images

Nachdem Sie Docker-Images gepullt haben, müssen Sie wissen, wie Sie diese effektiv auflisten, inspizieren und verwalten können.

Auflisten von Docker-Images

Um alle Docker-Images anzuzeigen, die Sie auf Ihren lokalen Rechner heruntergeladen haben, verwenden Sie den Befehl docker images (oder seinen Alias docker image ls):

docker images

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
ubuntu        22.04     58db3edaf2be   3 weeks ago    77.8MB
nginx         latest    605c77e624dd   4 weeks ago    142MB

Diese Ausgabe zeigt:

  • REPOSITORY: Der Name des Images
  • TAG: Die Version des Images
  • IMAGE ID: Eine eindeutige Kennung für das Image
  • CREATED: Wann das Image erstellt wurde
  • SIZE: Die Größe des Images auf der Festplatte

Inspizieren von Docker-Images

Um detaillierte Informationen über ein bestimmtes Image zu erhalten, verwenden Sie den Befehl docker inspect:

docker inspect ubuntu:22.04

Dieser Befehl zeigt ein JSON-Array an, das alle Details über das Image enthält, einschließlich:

  • Layer-Informationen
  • Umgebungsvariablen
  • Architektur
  • Betriebssystem
  • Konfiguration

Die Ausgabe ist recht lang und detailliert. Hier ist ein Ausschnitt davon:

[
    {
        "Id": "sha256:58db3edaf2beXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
        "RepoTags": [
            "ubuntu:22.04"
        ],
        "RepoDigests": [
            "ubuntu@sha256:2b7412e6465c3fc7fc5bb21d3e6f1917c167358449fecac8176c6e496e5c1f05f"
        ],
        ...
    }
]

Image-Historie

Um die Layer-Historie eines Images (wie es erstellt wurde) anzuzeigen, verwenden Sie den Befehl docker history:

docker history ubuntu:22.04

Die Ausgabe zeigt jeden Layer, aus dem das Image besteht:

IMAGE          CREATED       CREATED BY                                      SIZE
58db3edaf2be   3 weeks ago   /bin/sh -c #(nop)  CMD ["bash"]                0B
<missing>      3 weeks ago   /bin/sh -c #(nop) ADD file:15efc167a417...     77.8MB

Entfernen von Docker-Images

Wenn Sie ein Image nicht mehr benötigen, können Sie es entfernen, um Speicherplatz freizugeben, indem Sie den Befehl docker rmi verwenden:

docker rmi nginx

Wenn erfolgreich, zeigt Docker die entfernten Image-IDs an:

Untagged: nginx:latest
Untagged: nginx@sha256:f9c305f882a7062db720e582ce619686cbe29742eea6e1db6dcf84b200eec560
Deleted: sha256:605c77e624ddb75e6110f997c58876bba43f0blindividualayeridshereXX
(...more layers deleted...)

Wenn das Image von einem Container verwendet wird, müssen Sie zuerst den Container entfernen oder die Option -f (force) verwenden:

docker rmi -f nginx

Jetzt wissen Sie, wie Sie Ihre Docker-Images verwalten können. Gehen wir zum letzten Schritt über, in dem wir tatsächlich ein Image verwenden, um einen Container auszuführen.

Verwenden von Docker-Images

Das Pullen von Docker-Images ist nur der erste Schritt. Lassen Sie uns nun lernen, wie man diese Images verwendet, um Container auszuführen.

Ausführen eines Containers aus einem Image

Um einen Container aus einem Image zu erstellen und zu starten, verwenden Sie den Befehl docker run:

docker run ubuntu:22.04 echo "Hello from Ubuntu container"

Dieser Befehl:

  1. Erstellt einen neuen Container aus dem Image ubuntu:22.04
  2. Führt den Befehl echo "Hello from Ubuntu container" innerhalb des Containers aus
  3. Zeigt die Ausgabe an:
Hello from Ubuntu container

Nach der Ausführung des Befehls stoppt der Container, da er seine Aufgabe abgeschlossen hat.

Ausführen eines interaktiven Containers

Um eine interaktive Shell innerhalb eines Containers zu starten, verwenden Sie die Optionen -i (interaktiv) und -t (Terminal):

docker run -it ubuntu:22.04 bash

Dies gibt Ihnen eine Bash-Shell innerhalb des Ubuntu-Containers, in der Sie Befehle ausführen können:

root@a1b2c3d4e5f6:/## ls
bin   dev  home  lib32  libx32  mnt  proc  run   srv  tmp  var
boot  etc  lib   lib64  media   opt  root  sbin  sys  usr

Um den Container zu verlassen, geben Sie exit ein oder drücken Sie Ctrl+D:

root@a1b2c3d4e5f6:/## exit
exit

Ausführen eines Containers im Detached-Modus

Um einen Container im Hintergrund (Detached-Modus) auszuführen, verwenden Sie die Option -d:

docker run -d --name nginx-server -p 8080:80 nginx

Dieser Befehl:

  1. Erstellt einen Container namens nginx-server aus dem nginx-Image
  2. Führt ihn im Detached-Modus (-d) aus
  3. Mappt Port 8080 auf Ihrem Host auf Port 80 im Container
  4. Gibt eine Container-ID zurück:
e1d0ac1dcb21a93d9d878dcf40c054eb9f3c2b1bf5ecce7c29b6fa8ce6b219c1

Zugriff auf den laufenden Container

Jetzt können Sie über http://localhost:8080 in Ihrem Browser auf den Nginx-Webserver zugreifen oder curl verwenden, um zu überprüfen, ob er funktioniert:

curl localhost:8080

Dies sollte die Nginx-Willkommensseite HTML anzeigen:

<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
...
</html>

Auflisten der laufenden Container

Um alle laufenden Container anzuzeigen, verwenden Sie:

docker ps

Dies zeigt Informationen über Ihre laufenden Container an:

CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                  NAMES
e1d0ac1dcb21   nginx     "/docker-entrypoint.…"   30 seconds ago   Up 29 seconds   0.0.0.0:8080->80/tcp   nginx-server

Stoppen und Entfernen von Containern

Um einen laufenden Container zu stoppen:

docker stop nginx-server

Um einen gestoppten Container zu entfernen:

docker rm nginx-server

Sie haben jetzt erfolgreich Docker-Images verwendet, um Container auszuführen. Dies ist der grundlegende Workflow für die Verwendung von Docker in Ihren Entwicklungs- und Bereitstellungsprozessen.

Zusammenfassung

Herzlichen Glückwunsch zum Abschluss dieses Docker-Image-Labs. Sie haben die wesentlichen Fähigkeiten für die Arbeit mit Docker-Images gelernt:

  1. Verstehen, was Docker-Images sind und wie sie in Registries organisiert sind
  2. Suchen und Pullen von Docker-Images von Docker Hub
  3. Verwalten Ihrer lokalen Docker-Images, einschließlich Auflisten, Inspizieren und Entfernen
  4. Verwenden von Docker-Images zum Ausführen von Containern in verschiedenen Modi

Diese Fähigkeiten bilden die Grundlage für die Arbeit mit Docker und ermöglichen es Ihnen, Containerisierung in Ihrem Entwicklungsworkflow zu nutzen. Sie können jetzt jedes Docker-Image aus öffentlichen oder privaten Registries pullen und es verwenden, um containerisierte Anwendungen auszuführen.

Nächste Schritte für weiteres Lernen:

  • Erstellen Ihrer eigenen Docker-Images mit Dockerfiles
  • Arbeiten mit Docker Compose für Multi-Container-Anwendungen
  • Verwenden von Docker-Volumes für persistenten Speicher
  • Einrichten von Container-Netzwerken

Erkunden Sie weiterhin das riesige Ökosystem von Docker-Images, das auf Docker Hub verfügbar ist, um Tools und Anwendungen zu finden, die Ihren Entwicklungsprozess beschleunigen können.