Grundlagen von Docker-Images
Was ist ein Docker-Image?
Ein Docker-Image ist ein leichtgewichtiges, eigenständiges und ausführbares Paket, das alles enthält, was zum Ausführen einer Software benötigt wird, einschließlich Code, Laufzeitumgebung, Systemtools, Bibliotheken und Einstellungen. Es dient als Blaupause für die Erstellung von Containern, die laufende Instanzen dieser Images sind.
Hauptbestandteile von Docker-Images
Docker-Images bestehen aus mehreren Schichten, die jeweils eine Reihe von Änderungen am Dateisystem darstellen. Diese Schichten sind schreibgeschützt und tragen zur Optimierung von Speicherplatz und Leistung bei.
graph LR
A[Basis-Image-Schicht] --> B[Anwendungsschicht]
B --> C[Konfigurationsschicht]
C --> D[Laufzeit-Schicht]
Prozess der Imageerstellung
Um ein Docker-Image zu erstellen, verwenden Entwickler eine Dockerfile, die Anweisungen zum Erstellen des Images enthält. Hier ist ein praktisches Beispiel:
## Beispiel Dockerfile für Ubuntu 22.04
FROM ubuntu:22.04
LABEL maintainer="[email protected]"
## Aktualisierung der Systempakete
RUN apt-get update && apt-get upgrade -y
## Installation notwendiger Tools
RUN apt-get install -y python3 python3-pip
## Festlegung des Arbeitsverzeichnisses
WORKDIR /app
## Kopieren der Anwendungsdateien
COPY . /app
## Installation der Abhängigkeiten
RUN pip3 install -r requirements.txt
## Offenlegung des Ports
EXPOSE 8000
## Definition des Einstiegspunkts
CMD ["python3", "app.py"]
Docker-Image-Repositorys
Repository-Typ |
Beschreibung |
Beispiel |
Lokales Repository |
Images auf dem lokalen Rechner gespeichert |
Docker-Daemon-Cache |
Öffentliches Repository |
Öffentlich zugänglicher Speicherort für Images |
Docker Hub |
Privates Repository |
Beschränkter Zugriff auf Images |
Azure Container Registry |
Befehle zur Imageverwaltung
Docker bietet verschiedene Befehle zur Verwaltung von Images:
## Abrufen eines Images aus dem Repository
docker pull ubuntu:22.04
## Auflisten der lokalen Images
docker images
## Löschen eines Images
docker rmi ubuntu:22.04
## Erstellen eines Images aus der Dockerfile
docker build -t myapp:v1 .
Verständnis der Image-Schichten
Jede Anweisung in einer Dockerfile erstellt eine neue Schicht. Diese Schichten werden zwischengespeichert und können in verschiedenen Images wiederverwendet werden, was die Buildzeit und die Speicherplatzanforderungen erheblich reduziert.
graph TD
A[Basis-Ubuntu-Schicht] --> B[Python-Installationsschicht]
B --> C[Anwendungsschicht]
C --> D[Konfigurationsschicht]
Effiziente Docker-Images sollten:
- Minimal in der Größe sein
- Schnell herunterzuladen und zu starten
- Nur die notwendigen Komponenten enthalten
Durch das Verständnis der Grundlagen von Docker-Images können Entwickler optimierte Container-Images für verschiedene Bereitstellungsszenarien erstellen.