CodeGym /Kurse /Docker SELF /Einführung in Docker Images

Einführung in Docker Images

Docker SELF
Level 13 , Lektion 0
Verfügbar

1.1 Grundlagen von Docker Images

Docker Images (Docker-Abbilder) sind Templates für Docker-Container. Sie enthalten alles Notwendige, um Anwendungen auszuführen: Code, Bibliotheken, Abhängigkeiten, Tools und Konfigurationsdateien. Zu verstehen, was Docker Images sind und wie sie strukturiert sind, ist wichtig für die effiziente Nutzung von Docker.

Docker Image ist ein unveränderbares Template, das zur Erstellung von Containern verwendet wird. Es enthält alle notwendigen Komponenten, um eine Anwendung in einer isolierten Umgebung auszuführen. Wenn du einen Container startest, erstellt Docker eine Instanz des Images und startet diese.

Wichtige Eigenschaften von Docker Images:

  1. Unveränderbarkeit: Docker Images sind unveränderbar. Änderungen im Container beeinflussen das ursprüngliche Image nicht. Um den Inhalt eines Images zu ändern, musst du ein neues Image erstellen.
  2. Schichtenstruktur: Docker Images bestehen aus mehreren Schichten. Jede Schicht repräsentiert eine Veränderung im Vergleich zur vorherigen. Das ermöglicht eine effiziente Nutzung des Speicherplatzes durch Wiederverwendung von Schichten.
  3. Identifikation: Jedes Image hat eine einzigartige Identifikationsnummer (SHA256-Hash) und kann außerdem ein oder mehrere Tags haben, die die Verwaltung von Image-Versionen erleichtern.

Struktur von Docker Images:

Docker Images haben eine Schichtenstruktur, bei der jede Schicht ein Dateisystem ist. Diese Schichten werden im Docker-Cache gespeichert und können von anderen Images wiederverwendet werden. Die Schichtenstruktur macht Docker Images leicht und effizient. Zum Beispiel ist die erste Schicht das Betriebssystem, die zweite ist Python und die dritte ist deine Anwendung.

Hauptkomponenten der Struktur von Docker Images:

  1. Basisschicht (Base Layer): Die erste Schicht des Images, die oft als Grundlage für die Erstellung anderer Images dient. Zum Beispiel könnte das eine minimalistische Version eines Betriebssystems wie Ubuntu oder Alpine Linux sein.
  2. Zwischenschichten (Intermediate Layers): Diese Schichten werden basierend auf den Befehlen erstellt, die im Dockerfile ausgeführt werden (z. B. Installation von Paketen, Kopieren von Dateien usw.). Jede Schicht fügt Änderungen zur vorherigen hinzu.
  3. Endschicht (Final Layer): Die letzte Schicht, die auf Anweisungen wie CMD, ENTRYPOINT oder Änderungen im Container basiert, wird als "Container-Schicht" bezeichnet. Diese Schicht ist temporär und existiert nur während des Container-Betriebs.

1.2 Wie funktionieren Docker Image Layers

Jede Schicht eines Docker Images ist eine Reihe von Änderungen im Vergleich zur vorherigen Schicht. Wenn Docker ein Image erstellt, führt es jede Anweisung aus dem Dockerfile aus und fügt für jede Änderung eine neue Schicht hinzu.

Beispiel für das Erstellen von Schichten:

  1. Basis-Image: Wir starten mit einem Basis-Image, zum Beispiel ubuntu:20.04. Das wird die erste Schicht sein.
  2. Installation von Paketen: Der Befehl RUN apt-get update && apt-get install -y python3 erstellt eine neue Schicht mit installiertem Python.
  3. Dateien kopieren: Der Befehl COPY . /app fügt die Anwendungsdateien in eine neue Schicht hinzu.
  4. Arbeitsverzeichnis einstellen: Der Befehl WORKDIR /app erstellt eine Schicht, die das Arbeitsverzeichnis für nachfolgende Befehle festlegt.

Vorteile der Verwendung von Schichten:

  1. Wiederverwendung: Schichten können von anderen Images wiederverwendet werden. Zum Beispiel, wenn zwei Images die gleiche Basisschicht verwenden, lädt Docker sie nur einmal herunter, was Platz und Zeit spart.
  2. Caching: Docker cached Schichten, was den Erstellungsprozess von Images beschleunigt. Wenn eine Schicht nicht geändert wurde, verwendet Docker sie aus dem Cache, anstatt sie neu zu erstellen.
  3. Modularität: Die Schichtstruktur ermöglicht eine modulare Entwicklung von Images. Du kannst einzelne Schichten aktualisieren oder ändern, ohne das gesamte Image anzufassen.

Identifikation und Tags von Docker Images:

Jedes Docker Image wird durch einen einzigartigen Hash (SHA256) identifiziert, der basierend auf dem Inhalt des Images und all seiner Schichten generiert wird. Zur einfacheren Verwaltung und Versionierung können Docker Images auch Tags haben.

Beispiel für die Identifikation eines Images:

Der folgende Befehl zeigt eine Liste aller Images auf deinem System, einschließlich ihres Repositories, ihrer Tags, ihrer IDs und ihrer Größen:

Terminal

docker images

1.3 Arbeit mit Docker Images

Docker bietet viele Befehle zur Arbeit mit Images. Hier sind die wichtigsten:

  • Erstellen eines Images: docker build
  • Container aus einem Image starten: docker run
  • Liste der Images: docker images
  • Image löschen: docker rmi
  • Suche nach Images im Docker Hub: docker search
  • Image aus Docker Hub herunterladen: docker pull
  • Image an Docker Hub senden: docker push

Beispiel für das Erstellen und Verwenden eines Docker Images:

1. Erstellen einer Dockerfile:

dockerfile

# Wir verwenden ein Basis-Image Ubuntu
FROM ubuntu:20.04

# Python installieren
RUN apt-get update && apt-get install -y python3

# Anwendungsdateien in den Container kopieren
COPY . /app

# Arbeitsverzeichnis setzen
WORKDIR /app

# Befehl zum Starten der Anwendung angeben
CMD ["python3", "app.py"]

2. Image erstellen:

Der folgende Befehl erstellt ein Image mit dem Namen my_python_app, basierend auf der Dockerfile im aktuellen Verzeichnis:

Terminal

docker build -t my_python_app .

3. Container aus einem Image starten:

Nutze den folgenden Befehl, um einen Container aus dem erstellten Image my_python_app im Hintergrund zu starten:

Terminal

docker run -d my_python_app
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION