Hallo,

ich habe angefangen mich vor einiger Zeit in die Thematik Docker-Container einzuarbeiten. Aus Entwicklersicht sehr interessant. Für die produktive Nutzung sehe ich im Vergleich zu klassischen Servern aber ein Problem: Wie wird das regelmäßige Patchen der Container sichergestellt, vor allem hinsichtlich (kritischer) Sicherheitsupdates?

Ich sehe zwei große Probleme:
- Prüfung ob überhaupt Updates verfügbar sind
- Einspielen dieser Updates, vor allem bei harten Versionsangaben

Diese Probleme werden an einem einfachen Beispiel deutlich: Eine PHP 7 Anwendung läuft in einem Container mit Basis-Image php:7.1.3 zum aktuellen Zeitpunkt. Morgen erscheint ein Sicherheitsupdate, und dafür ein neues Basis-Image 7.1.4. Mein Container bekommt davon NICHTS mit. Selbst wenn ich ihn löschen und neu erstellen würde, da ja hart Version 7.1.3 referenziert wird. Dieses Problem ließe sich mit dem latest Tag umgehen. Statt einer spezifischen Version holt sich Docker dann immer die Neuste. Das widerspräche aber dem Prinzip von konsistenten Abhängigkeiten und ist daher nicht Best Practice. Schließlich ist es ein Hauptziel von Docker, solche Inkonsistenzen zu vermeiden. Mir fehlt an dieser Stelle eine Art Branch, um Sicherheitspatches innerhalb einer Haupt- oder Nebenversion zu beziehen. Beispielsweise 7.1-latest-security-patches. Dieser Branch enthält dann nur sicherheitsrelevante Aktualisierungen, sodass die Gefahr, meine Anwendung zu zerschießen, sehr gering ist.

Einen solchen Tag gibt es soweit ich weiß nicht. Aber selbst wenn, bestünde immer noch das Problem, auf die Updates aufmerksam zu werden. Ich müsste händisch regelmäßig alle verwendeten Images prüfen, und von Hand Patchen. Vermisst wird hier eine Option, automatisch nach Sicherheitsupdates zu suchen und diese zu installieren, wie man es z.B. unter Ubuntu Server aktivieren kann. In anderen Diskussionen habe ich nur selbst erstellte Bash-Scripte gefunden, die aber grundsätzlich alle Updates einspielen. Das will ich natürlich auch nicht, zumindest nicht auf produktiven Systemen.

Gibt es für dieses Problem keine saubere Managementlösung?
Ich würde gerne definieren können, auf welchem Haupt/Nebenversionszweig mein Container stehen soll, sodass dieser auf dem Produktivsystem eigenständig Sicherheitspatches enthält.

Ohne ein solches System sehe ich die große Gefahr, dass Sicherheitspatches unbemerkt bleiben und Wochen, wenn nicht noch länger, nicht installiert sind, wodurch die jeweilige Anwendung natürlich erheblich gefährdet werden kann, falls es sich um große Sicherheitslücken handelt. Das möchte ich gerne vermeiden.