Wie baut man ein Docker Image? – Einführung in Dockerfiles
Nachdem ich meine ersten Container gestartet hatte, wurde mir schnell klar:
Um wirklich eigene Anwendungen zu containerisieren, braucht man ein Dockerfile.
In diesem Artikel schauen wir uns an, wie Docker Images entstehen, wie ein Dockerfile aufgebaut ist und warum es so wichtig ist.
Was ist ein Docker Image?
Ein Docker Image ist die Grundlage eines Containers. Es enthält:
- die Anwendung
- alle Abhängigkeiten
- Konfigurationen
- eine standardisierte Laufzeitumgebung
Images sind unveränderlich („immutable“). Jeder Container ist eine Instanz eines Images.
Was ist ein Dockerfile?
Ein Dockerfile ist eine simple Textdatei, die beschreibt, wie Docker ein Image bauen soll.
Die Befehle darin sagen Docker Schritt für Schritt:
- welches Basis-Image genutzt wird
- welche Dateien kopiert werden sollen
- welche Befehle ausgeführt werden
- welcher Port freigegeben wird
- wie der Container gestartet wird
Ein einfaches Dockerfile sieht so aus:
FROM nginx:alpine
COPY index.html /usr/share/nginx/html/index.html
Damit ersetzt du die Standard-Startseite des Nginx-Webservers durch deine eigene.
Docker Image bauen
Der Befehl zum Bauen eines Images lautet:
docker build -t mein-nginx .
Erklärung:
- -t mein-nginx = Name des Images
- . = aktuelles Verzeichnis (dort muss das Dockerfile liegen)
Image starten
Um einen Container aus deinem selbstgebauten Image zu starten:
docker run -p 8080:80 mein-nginx
Jetzt kannst du deine Webseite auf http://localhost:8080 öffnen.
Best Practices für Dockerfiles
- Minimale Basis-Images verwenden (z. B. alpine)
- Unnötige Dateien entfernen (Cache, Logfiles)
- Schichten reduzieren (weniger Docker Layer)
- .dockerignore verwenden, um Build-Zeit zu verkürzen
- Explizite Versionen nutzen für reproduzierbare Builds
Mein persönliches Learning
Am Anfang hätte ich nicht gedacht, wie viel Einfluss ein kleines Dockerfile auf die Stabilität einer Anwendung haben kann.
Die Buildzeiten wurden kürzer, die Images sauberer und das Deployment einfacher.
Besonders wichtig war für mich das Prinzip der „kleinsten möglichen Basis“ –
große Images verursachen viele Probleme, kleine Images sind schneller und sicherer.
Was als Nächstes kommt
Im nächsten Beitrag geht es um:
„Was ist Kubernetes? – Die Grundlagen für Einsteiger“
Fazit
Ein Dockerfile ist der Dreh- und Angelpunkt beim Erstellen eigener Container.
Wer versteht, wie Images gebaut werden, legt den Grundstein für den Einstieg in Kubernetes und die gesamte Cloud-Native-Welt.
Nächster Artikel: Was ist Kubernetes? – Einstieg in die Orchestrierung