Docker-Images mit Trivy auf Schwachstellen prüfen¶
Veröffentlicht am 22. August 2026 · Geschätzte Lesezeit: 4 Minuten
Trivy untersucht Container-Images auf bekannte Sicherheitslücken und versehentlich eingebaute Geheimnisse. Das Werkzeug läuft hier selbst als kurzlebiger Docker-Container und verändert das geprüfte Image nicht. Die erste Prüfung dauert wegen des Datenbank-Downloads meist 5 bis 15 Minuten, spätere Läufe sind schneller.
Voraussetzungen
- Ein Server oder PC mit Docker
- Internetzugang für das Trivy-Image und die Prüfdatenbank
- Ein konkretes Container-Image mit Tag, zum Beispiel aus deiner Compose-Datei
- Etwa 1 GB freier Speicherplatz für Image und Cache
1. Cache-Ordner anlegen¶
Führe den Befehl im Terminal des Docker-Servers aus. Der Cache verhindert, dass Trivy die Prüfdatenbank bei jedem Lauf vollständig neu laden muss.
2. Trivy-Image laden¶
Lade das offizielle Container-Image. Mit latest erhältst du beim bewussten erneuten Ausführen den aktuellen Stand; für automatisierte Abläufe solltest du später einen geprüften Versions-Tag fest eintragen.
3. Öffentliches Image prüfen¶
Dieser Befehl scannt ein Image direkt aus seiner Registry. Ersetze <image-name:tag> vollständig, zum Beispiel durch den exakten Eintrag hinter image: in deiner compose.yaml.
docker run --rm \
-v "$HOME/trivy/cache:/root/.cache/" \
aquasec/trivy:latest image '<image-name:tag>'
Beim ersten Lauf lädt Trivy seine Schwachstellendatenbank. Im Ergebnis sind Funde nach Schweregrad aufgelistet. Entscheidend sind Paketname, installierte Version und eine verfügbare korrigierte Version.
Ein Scan ist keine Garantie
Trivy findet bekannte Probleme aus seinen Datenquellen. Ein leeres Ergebnis beweist nicht, dass das Image fehlerfrei ist. Prüfe außerdem die Herkunft des Images, dessen Berechtigungen und die sichere Konfiguration des Containers.
4. Lokales Docker-Image prüfen¶
Ist das Image nur lokal vorhanden, benötigt Trivy Zugriff auf die Docker-Schnittstelle des Servers. Ersetze auch hier <image-name:tag> durch den vollständigen lokalen Namen.
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-v "$HOME/trivy/cache:/root/.cache/" \
aquasec/trivy:latest image '<image-name:tag>'
Docker-Socket ist besonders sensibel
Zugriff auf /var/run/docker.sock kann weitreichende Kontrolle über den Docker-Server ermöglichen, auch wenn die Einbindung als schreibgeschützt markiert ist. Verwende ausschließlich das offizielle Trivy-Image und starte den Scanner nur für den einzelnen Lauf. Für Images aus einer Registry ist Schritt 3 ohne Socket sicherer.
5. Auf wichtige, behebbare Funde eingrenzen¶
Der folgende Lauf zeigt nur Funde der Stufen HIGH und CRITICAL, für die laut Datenquelle eine Korrektur verfügbar ist. Ersetze <image-name:tag> wie zuvor.
docker run --rm \
-v "$HOME/trivy/cache:/root/.cache/" \
aquasec/trivy:latest image \
--severity HIGH,CRITICAL \
--ignore-unfixed \
'<image-name:tag>'
--ignore-unfixed erleichtert die Planung eines Updates, blendet aber weiterhin vorhandene Risiken ohne verfügbare Korrektur aus. Führe deshalb gelegentlich auch den vollständigen Scan aus Schritt 3 aus.
6. Image-Konfiguration auf Geheimnisse prüfen¶
Trivy prüft standardmäßig Dateien im Image auf Geheimnisse. Mit dem folgenden Zusatz untersuchst du außerdem die Image-Konfiguration, beispielsweise Umgebungsvariablen aus den Build-Schritten.
docker run --rm \
-v "$HOME/trivy/cache:/root/.cache/" \
aquasec/trivy:latest image \
--image-config-scanners secret \
'<image-name:tag>'
Wird ein echter Schlüssel gefunden, entferne ihn aus Dockerfile und Image-Historie, sperre ihn beim jeweiligen Dienst und erzeuge einen neuen Schlüssel. Nur die aktuelle Datei zu löschen reicht nicht, wenn der Wert in einer älteren Image-Schicht erhalten bleibt.
7. Compose-Dateien auf Fehlkonfigurationen prüfen¶
Wechsle zuerst in den Ordner deines Docker-Projekts. Ersetze <projektordner> durch den vollständigen Pfad, zum Beispiel /home/pi/mein-dienst.
Der nächste Befehl bindet das aktuelle Projekt nur lesbar ein und prüft unterstützte Konfigurationsdateien auf riskante Einstellungen.
docker run --rm \
-v "$PWD:/workspace:ro" \
-v "$HOME/trivy/cache:/root/.cache/" \
aquasec/trivy:latest config /workspace
Lies bei jedem Fund die Beschreibung und die angegebene Stelle. Eine Warnung muss zur tatsächlichen Verwendung passen; ändere Konfigurationen nicht blind.
8. Sicher aktualisieren und zurückkehren¶
Trivy repariert nichts automatisch. Sichere zuerst die Daten und Konfiguration des betroffenen Dienstes. Trage dann einen neueren, ausdrücklich geprüften Image-Tag in dessen compose.yaml ein, lade das Image und starte den Dienst neu.
Prüfe Anwendung und Protokolle und wiederhole danach den Scan. Falls das Update Probleme verursacht, stellst du die zuvor gesicherte Compose-Datei und bei Bedarf die Anwendungsdaten wieder her und startest den alten, fest eingetragenen Image-Tag.
Der Trivy-Cache selbst enthält keine Anwendungsdaten. Bei einem beschädigten Cache kannst du ihn löschen; er wird beim nächsten Scan neu aufgebaut.
Nicht während eines Datenbankfehlers löschen
Lösche den Cache nur, wenn ein Lauf reproduzierbar an beschädigten Cache-Dateien scheitert. Bei einem vorübergehenden Netzwerk- oder Rate-Limit-Fehler wartest du besser und versuchst es später erneut.
9. Quellen und Videos¶
Die Befehle orientieren sich an der offiziellen Trivy-Installationsanleitung für Docker, der Dokumentation zum Scannen von Container-Images, zur Schwachstellenprüfung und zur Prüfung von Fehlkonfigurationen. Praktische Ergänzungen sind die öffentlich verfügbaren Videos Trivy Demo und Secret Scanning with Trivy. Quellen und Befehle wurden am 22. August 2026 geprüft.
Fertig¶
Du kannst jetzt Registry- und lokale Docker-Images prüfen, kritische behebbare Funde herausfiltern und Compose-Dateien untersuchen. Die Funktionsprüfung ist erfolgreich, wenn Trivy eine Ergebnistabelle ausgibt und ein zweiter Lauf dank des Caches ohne vollständigen erneuten Datenbank-Download startet.