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, Bibliotheken, Umgebungsvariablen und Konfigurationsdateien. Es dient als Blaupause für die Erstellung von Docker-Containern.
Hauptbestandteile von Docker-Images
Image-Layers
Docker-Images bestehen aus mehreren schreibgeschützten Layers, die übereinander gestapelt sind. Jeder Layer repräsentiert eine Reihe von Änderungen am Dateisystem:
graph TD
A[Basis-Layer: Ubuntu] --> B[Python installieren]
B --> C[Anwendungskode kopieren]
C --> D[Umgebungsvariablen setzen]
Image-Anatomie
Ein typisches Docker-Image besteht aus mehreren wichtigen Komponenten:
Komponente |
Beschreibung |
Beispiel |
Basis-Image |
Fundamentale Layer |
Ubuntu, Alpine Linux |
Abhängigkeiten |
Benötigte Bibliotheken und Pakete |
Python, Node.js |
Anwendungscode |
Ihre spezifische Anwendung |
Flask-, Django-App |
Konfiguration |
Laufzeit-Einstellungen |
ENV-Variablen, Ports |
Docker-Images erstellen
Dockerfile
Ein Dockerfile ist eine Textdatei, die Anweisungen zum Erstellen eines Docker-Images enthält. Hier ist ein einfaches Beispiel:
## Verwendung des offiziellen Ubuntu-Basis-Images
FROM ubuntu:22.04
## Paketlisten aktualisieren
RUN apt-get update && apt-get upgrade -y
## Python installieren
RUN apt-get install -y python3 python3-pip
## Arbeitsverzeichnis setzen
WORKDIR /app
## Anwendungsdateien kopieren
COPY . /app
## Abhängigkeiten installieren
RUN pip3 install -r requirements.txt
## Standardbefehl definieren
CMD ["python3", "app.py"]
Image erstellen
Um ein Docker-Image zu erstellen, verwenden Sie den Befehl docker build
:
## Image mit einem Tag erstellen
docker build -t myapp:v1 .
## Verfügbare Images auflisten
docker images
Benennung und Tagging von Images
Docker-Images folgen einer Standardbenennungskonvention:
[Registry]/[Benutzername]/[Image-Name]:[Tag]
- Beispiel:
docker.io/labex/python-app:latest
Speicherung und Verteilung von Images
Images können gespeichert werden in:
- Lokalem Docker-Daemon
- Container-Registries (Docker Hub, LabEx Registry)
- Privaten Repositories
Best Practices
- Verwendung minimaler Basis-Images
- Minimierung der Layer-Anzahl
- Nutzung des Build-Caches
- Vermeidung der Installation unnötiger Pakete
- Verwendung von Multi-Stage-Builds für kleinere Images
Mit dem Verständnis dieser Grundlagen können Entwickler effiziente und reproduzierbare Docker-Images für ihre Anwendungen erstellen.