Docker für Entwickler

Docker Troubleshooting

20 praktische Diagnose- und Reparaturrezepte für Entwickler

Docker-Probleme nicht länger mit Trial and Error lösen. Dieses Buch zeigt einen systematischen Diagnoseweg für typische Fehler bei Containern, Netzwerken, Volumes, Konfigurationen und Builds.

Cover des Buches Docker Troubleshooting

Troubleshooting statt Trial and Error

Der Container läuft nicht. Und jetzt?

Docker macht Entwicklungsumgebungen, Builds und Deployments reproduzierbarer. Aber nicht automatisch verständlicher.

Ein Container beendet sich sofort. Ein Dienst ist vom Host nicht erreichbar. Daten sind nach dem Neustart verschwunden. Eine Umgebungsvariable enthält nicht den erwarteten Wert. Ein Build, der gestern noch schnell war, dauert plötzlich mehrere Minuten.

In solchen Situationen hilft es wenig, wahllos Docker-Befehle auszuprobieren. Entscheidend ist zu verstehen, welchen Zustand Docker tatsächlich hat und welche Beobachtung zur nächsten sinnvollen Diagnose führt.

Die Methode

Erst diagnostizieren, dann reparieren

Im Mittelpunkt des Buches steht kein Katalog magischer Docker-Befehle, sondern ein wiederverwendbarer Diagnoseprozess.

01

Beobachten

Symptome, Logs, Exit Codes und den tatsächlichen Zustand sichtbar machen.

02

Eingrenzen

Hypothesen bilden und mit gezielten Prüfungen mögliche Ursachen ausschließen.

03

Reparieren

Nicht pauschal aufräumen, sondern genau die identifizierte Ursache beheben.

04

Verifizieren

Prüfen, ob die Reparatur tatsächlich das ursprüngliche Problem gelöst hat.

Ein Blick ins Buch

Erst verstehen, dann löschen

Ein Auszug aus dem ersten Kapitel zeigt, wie die Rezepte aufgebaut sind: Ausgangssituation verstehen, Zustand sichtbar machen und erst danach entscheiden, was tatsächlich zu tun ist.

Kapitel 1 · Erst diagnostizieren, dann aufräumen

Docker belegt plötzlich 30 oder 40 GB auf der Entwicklungsmaschine. Die naheliegende Reaktion ist, nach einem möglichst gründlichen prune-Befehl zu suchen. Genau damit solltest du nicht anfangen.

Docker verteilt seinen Speicherverbrauch auf mehrere Bereiche: Images, Container, Volumes und den Build-Cache. Wenn du zuerst herausfindest, wo der Speicher steckt, kannst du anschließend genau dort aufräumen.

Bevor wir irgendetwas löschen, verschaffen wir uns einen Überblick:

$ docker system df

TYPE            TOTAL   ACTIVE   SIZE      RECLAIMABLE
Images          14      3        8.72GB    6.31GB (72%)
Containers      7       2        1.18GB    824MB (69%)
Local Volumes   6       3        5.44GB    1.90GB (34%)
Build Cache     53      0        11.26GB   8.73GB

Diese Ausgabe beantwortet bereits die wichtigste Frage: Wo steckt der Speicher?

In unserem Beispiel sind vor allem zwei Bereiche interessant. Images belegen 8,72 GB, von denen Docker 6,31 GB als RECLAIMABLE einstuft. Noch größer ist der Build-Cache mit 11,26 GB.

Die Volumes belegen ebenfalls mehrere Gigabyte. Das ist aber noch kein Grund, sie zu löschen. Ein Volume kann beispielsweise die Daten unserer PostgreSQL-Datenbank enthalten.

Reclaimable bedeutet nicht wertlos

Docker kennt technische Referenzen, aber nicht die Bedeutung deiner Daten. Besonders bei Volumes solltest du niemals allein aufgrund eines hohen RECLAIMABLE-Werts entscheiden, etwas zu löschen.

Auszug aus Kapitel 1: „Erst diagnostizieren, dann aufräumen“

Inhalt

Die häufigsten Docker-Probleme aus Entwicklersicht

20 praktische Diagnose- und Reparaturrezepte führen von typischen Symptomen zur tatsächlichen Ursache.

Kapitel 1

Erst diagnostizieren, dann aufräumen

Wenn Docker immer mehr Speicherplatz verbraucht, ist docker system prune nicht automatisch die beste Antwort. Sie lernen, Images, Container, Volumes und Build-Cache zuerst gezielt zu analysieren.

Kapitel 2

Container, die nicht tun, was sie sollen

Fehlende Logs, sofort beendete Container, unerwartete Prozesse und Exit Code 137 werden Schritt für Schritt untersucht.

Kapitel 3

Netzwerkprobleme ohne Rätselraten

localhost, Service-Namen, Listener-Adressen, Container-Ports und Host-Port-Mappings verständlich diagnostizieren.

Kapitel 4

Volumes, Mounts und verschwundene Daten

Probleme an der Grenze zwischen Container-Dateisystem, Host-Dateisystem und persistenten Volumes verstehen und reproduzierbar lösen.

Kapitel 5

Konfiguration und Secrets richtig untersuchen

Compose-Interpolation, Umgebungsvariablen und tatsächlich im Container vorhandene Konfiguration voneinander unterscheiden.

Kapitel 6

Builds, die langsam und unnötig groß werden

Build Cache, Layer, Build Context, Dockerfile-Reihenfolge und .dockerignore gezielt analysieren.

Kapitel 7

Docker-Probleme systematisch lösen

Die einzelnen Techniken werden zu einem wiederverwendbaren Troubleshooting-Modell zusammengeführt, das sich auch auf neue und bisher unbekannte Docker-Probleme übertragen lässt.

Für wen?

Für Entwickler, die Docker bereits benutzen

Das Buch richtet sich an Entwickler, die Docker bereits einsetzen und nicht bei jeder Fehlermeldung wieder bei null anfangen möchten.

Sie müssen kein Docker-Experte sein. Grundkenntnisse zu Images, Containern und Docker Compose sind allerdings hilfreich.

Der Schwerpunkt liegt auf Docker Engine, Docker Compose und Docker Build mit Linux-Containern.

Bewusster Fokus

Docker verstehen, nicht die gesamte Container-Welt

Dieses Buch konzentriert sich bewusst auf die Probleme, die Entwickler bei der täglichen Arbeit mit Docker tatsächlich sehen.

Kubernetes, Cluster-Orchestrierung und umfangreiche Produktionsplattformen gehören nicht zum Umfang. Stattdessen geht es darum, Docker Engine, Docker Compose und Docker Build sicher diagnostizieren zu können.

Über den Autor

Aus der Entwicklungspraxis

Ich arbeite seit mehr als 25 Jahren professionell in der Softwareentwicklung und bin seit 2020 als technischer Trainer tätig.

Im Mittelpunkt meiner Bücher und Trainings steht nicht das bloße Auswendiglernen einzelner Befehle. Entscheidend ist, technische Systeme so weit zu verstehen, dass Probleme strukturiert analysiert und nachvollziehbar gelöst werden können.

Bernd Fischer

Docker Troubleshooting

Weniger raten. Mehr verstehen.

20 praktische Diagnose- und Reparaturrezepte für die Docker-Probleme, die Entwicklern im Alltag tatsächlich begegnen.