Docker Schnellstart – Docker Images (was ist das?)

Wir haben uns Images schon einmal angeschaut, aber in diesem Abschnitt werden wir tiefer in die Materie der Docker Images eintauchen und unser eigenes Image erstellen!

Docker-Images sind die Basis von Containern. Im vorherigen Beispiel haben wir das Busybox-Image aus der Registry gezogen (Pull) und den Docker-Client gebeten, einen Container basierend auf diesem Image zu starten.

Der Einfachheit halber kannst du dir ein Image wie ein Git Repository vorstellen - Images können mit Änderungen committed werden und haben mehrere Versionen. Wenn du keine spezifische Versionsnummer angibst, nimmt der Client standardmäßig die latest (neueste) Version. Zum Beispiel kannst du eine bestimmte Version des Ubuntu-Images ziehen.

docker pull ubuntu:20.10

Um ein neues Docker Image zu erhalten, kannst du es entweder von einer Registry (wie dem Docker Hub) beziehen oder dein eigenes erstellen. Auf dem Docker Hub gibt es zehntausende von Images. Du kannst auch direkt von der Kommandozeile aus mit docker search nach Images suchen.

Eine wichtige Unterscheidung, die du beachten solltest, wenn es um Images geht, ist der Unterschied zwischen Base- und Child-Images.

  • Basis-Images sind Images, die kein Eltern-Image haben, normalerweise Images mit einem OS wie ubuntu, busybox oder debian.
  • Child-Images sind Images, die auf Basis-Images aufbauen und zusätzliche Funktionen hinzufügen.

Dann gibt es noch offizielle und User-Images, die sowohl Base- als auch Child-Images sein können.

  • Offizielle Images sind Images, die offiziell von den Leuten von Docker gewartet und unterstützt werden. Diese sind typischerweise ein Wort lang. In der obigen Liste der Images sind die python, ubuntu, busybox und hello-world Images offizielle Images.
  • User-Images sind Images, die von Benutzern wie dir und mir erstellt und geteilt werden. Sie bauen auf den Basis-Images auf und fügen zusätzliche Funktionen hinzu. Typischerweise werden sie als user/image-name formatiert.

Mit Docker-Images arbeiten

In Docker basiert alles auf Images. Ein Image ist eine Kombination aus einem Dateisystem und Parametern. Nehmen wir ein Beispiel für den folgenden Befehl in Docker.

docker run hello-world
  • Der Docker-Befehl ist spezifisch und sagt dem Docker-Programm auf dem Betriebssystem, das er etwas "machen" muss.
  • Der " run "-Befehl wird verwendet, um zu erwähnen, dass wir eine Instanz eines Images erstellen wollen, welches dann als Container bezeichnet wird.
  • Schließlich steht "hello-world" für das Image, aus dem der Container erstellt wird.

Schauen wir uns nun an, wie wir das im Docker Hub verfügbare CentOS-Image nutzen können, um CentOS auf unserer Ubuntu-Maschine auszuführen. Wir können dies tun, indem wir den folgenden Befehl auf unserer Ubuntu-Maschine ausführen:

sudo docker run -it centos /bin/bash

Beachte die folgenden Punkte über den obigen sudo Befehl -

  • Wir verwenden den sudo-Befehl, um sicherzustellen, dass er mit Root-Zugriff läuft.
  • Hier ist " centos " der Name des Images, das wir von Docker Hub herunterladen und auf unserer Ubuntu Maschine installieren wollen.
  • ─it wird verwendet, um zu erwähnen, dass wir im interaktiven Modus laufen wollen.
  • /bin/bash wird verwendet, um die Bash-Shell zu starten, sobald CentOS gestartet ist.

Docker Images anzeigen

Um die Liste der Docker-Images auf dem System zu sehen, kannst du den folgenden Befehl ausführen.

docker images

Dieser Befehl wird verwendet, um alle derzeit auf dem System installierten Images anzuzeigen.

Anhand der Ausgabe im Terminal kannst du sehen, dass z.B. die Images centos, newcentos und jenkins installiert wurden. Jedes Image hat die folgenden Attribute -

  • TAG - Dies wird verwendet, um Images logisch zu taggen.
  • Image ID - Dies wird verwendet, um das Image eindeutig zu identifizieren.
  • Created - Die Anzahl der Tage, seit dem das Image erstellt wurde.
  • Virtual Size - Die Größe des Images.

Docker Images entfernen

Die Docker Images auf dem System können mit dem Befehl docker rmi entfernt werden. Schauen wir uns dieses Kommando im Detail an.

docker rmi <ImageID>

Dieser Befehl wird verwendet, um Docker Images zu entfernen.

Beispiel

sudo docker rmi 6z85fgzfg82s

Hier ist 6z85fnzi582s die Image ID des newcentos Images.

Schauen wir uns ein paar weitere Docker Befehle für Images an.

docker images -q

Dieser Befehl wird verwendet, um nur die Image ID's der Images zurückzugeben.

sudo docker images -q

Optionen: q - Weist den Docker Befehl an, nur die Image ID's zurückzugeben.

Rückgabewert: Die Ausgabe wird nur die Image ID's der Images auf dem Docker Host anzeigen.Ausgabe

docker inspect

Dieser Befehl wird verwendet, um die Details eines Images oder Containers zu sehen:

docker inspect <RepositoryName>

Beispiel

sudo docker inspect jenkins