docker inspect - alles über einen Container oder ein Image wissen
docker inspect - alles über einen Container oder ein Image wissen
docker inspect gibt vollständige Metadaten als JSON aus — was in docker ps oder docker images nicht sichtbar ist, steht hier.
Grundnutzung
docker inspect <container> # Container-Details
docker inspect <image> # Image-Details
docker inspect <network> # Netzwerk-Details
docker inspect <volume> # Volume-Details
Die Ausgabe ist immer ein JSON-Array — auch bei einem einzelnen Objekt.
Gezielt mit --format extrahieren
Das vollständige JSON ist riesig. Mit --format (Go-Templates) lassen sich einzelne Felder gezielt abrufen:
IP-Adresse im Standard-Netzwerk:
docker inspect --format='{{.NetworkSettings.IPAddress}}' myapp
IP in einem bestimmten Netzwerk:
docker inspect --format='{{.NetworkSettings.Networks.mynet.IPAddress}}' myapp
Restart-Policy:
docker inspect --format='{{.HostConfig.RestartPolicy.Name}}' myapp
Entrypoint und Command:
docker inspect --format='{{.Config.Entrypoint}}' myapp
docker inspect --format='{{.Config.Cmd}}' myapp
Gemountete Volumes:
docker inspect --format='{{range .Mounts}}{{.Source}} -> {{.Destination}}{{"\n"}}{{end}}' myapp
Ob OOM-Kill aufgetreten ist:
docker inspect --format='{{.State.OOMKilled}}' myapp
Exit-Code und Status:
docker inspect --format='{{.State.Status}} (Exit: {{.State.ExitCode}})' myapp
Umgebungsvariablen lesen
# Als Liste
docker inspect --format='{{range .Config.Env}}{{println .}}{{end}}' myapp
# Als JSON, dann mit jq filtern
docker inspect --format='{{json .Config.Env}}' myapp | jq '.[] | select(startswith("DB_"))'
Image inspizieren
docker image inspect nginx:latest
# Basis-Image und Layer
docker image inspect --format='{{.RootFS.Layers}}' nginx:latest
# Exposed Ports
docker image inspect --format='{{json .Config.ExposedPorts}}' nginx:latest
# Labels im Image
docker image inspect --format='{{json .Config.Labels}}' myapp:latest | jq
Mehrere Container auf einmal
docker inspect container1 container2 container3
# Nur IPs aller Container
docker ps -q | xargs docker inspect --format='{{.Name}}: {{.NetworkSettings.IPAddress}}'
Netzwerk inspizieren
docker network inspect bridge
docker network inspect --format='{{range .Containers}}{{.Name}}: {{.IPv4Address}}{{"\n"}}{{end}}' mynet
In Skripten nutzen
#!/bin/bash
# Warten bis Container healthy ist
CONTAINER="myapp"
until [ "$(docker inspect --format='{{.State.Health.Status}}' $CONTAINER)" = "healthy" ]; do
echo "Warte auf $CONTAINER..."
sleep 2
done
echo "$CONTAINER ist bereit."
# Prüfen ob Container läuft
if [ "$(docker inspect --format='{{.State.Running}}' myapp 2>/dev/null)" = "true" ]; then
echo "Container läuft"
fi
Wichtige Pfade im JSON
.State.Status → running, exited, paused
.State.Running → true/false
.State.ExitCode → letzter Exit-Code
.State.Health.Status → starting, healthy, unhealthy
.HostConfig.RestartPolicy → Name, MaximumRetryCount
.HostConfig.Memory → RAM-Limit in Bytes (0 = unbegrenzt)
.HostConfig.NanoCpus → CPU-Limit (1000000000 = 1 CPU)
.Config.Env → Array mit Umgebungsvariablen
.Config.Entrypoint → Entrypoint
.Config.Cmd → Command
.Mounts → Volume-Mounts
.NetworkSettings.Networks → Netzwerke mit IP-Adressen
docker inspect ist das Schweizer Taschenmesser für Container-Diagnose — besonders in Kombination mit jq und Shell-Skripten entfaltet es sein volles Potential.