Einführung
Die Verwendung des Tags „latest“ im Containeruniversum bietet eine einfache und bequeme Möglichkeit, das Thema der Containerversionierung innerhalb einer Container Registry weitgehend zu verdrängen.
Auf den ersten Blick scheint das Tag „latest“ eine gute Idee zu sein, um immer auf die „neueste“ Version des Container Images zuzugreifen.
„Latest“ ist jedoch nur ein Etikett und bedeutet nicht unbedingt, die neueste Version des Abbilds des Containers abzurufen.
Mittlerweile genießt das Tag „latest“ einen schlechten Ruf in der Container-Community und wird eher als Fluch denn als Segen angesehen.
Dabei wird die Verwendung des Tags „latest“ in der Containerumgebung gerne als Anti-Patern angesehen.
Fluch und Segen „latest“
Es stellt sich deshalb die Frage, ob der Tag “latest” überhaupt einen nachvollziehbaren Nutzen hat? Aber für irgendetwas muss der Tag „latest“ doch gut sein! Um dies zu beantworten hier zunächst eine schlechte Nachricht:
Was ist denn die Erwartungshaltung an den „latest“ Tag? Die “latest“ Version zeigt immer auf die zuletzt gepostete Version eines Container Images. Das ist leider meist nicht korrekt. Es ist lediglich ein „Tag“, das standardmäßig von Docker auf ein Container Image angewendet wird, wenn kein „Tag“ beim Container Image Bau vergeben wurde.
Wenn also nur „latest“ Tag zum Markieren eines Container Images verwendet wird, wird ihr aktuelles: latest-Tag mit dem neusten: latest-Tag überschrieben, und die babylonische (Sprach) Verwirrung ist perfekt.
Auf der anderen Seite hat das Tag „latest“ keinerlei Informationsgehalt. Es ist faktisch ein inhaltsloses Wort und erlaubt keinerlei Rückschlüsse über die im Container Image verwendete Version der Software.
Ein Rollback auf eine frühere Version des Container Images ist ebenfalls unmöglich, wenn das Container Image immer nur auf die „latest“ Version zurückgesetzt werden kann.
Aber jetzt genug vom „latest“ Bashing. Ist das „latest“ Tag schlecht oder böse? Nein, es wird nur falsch verstanden und hat sich seinen schlechten Ruf zu Recht durch die gedankenlose Verwendung in Tausenden von Container Images verdient.
Aber was ist die Lösung?
Aber was ist die Lösung, wenn der „latest“ Tag so verrufen ist? Nun folgt die gute Nachricht:
Wir, bei der NoseOver GmbH bauen alle unsere Container Images selbst. Dadurch haben wir die volle Kontrolle über alle Komponenten, welche in den Container Image verwendet werden.
Für das etikettieren (tagging) unserer Container verwenden wir die Versionsnummer der Hauptkomponenten unseres Container Images sowie einem Zeitstempel der angibt, wann das Container Image gebaut wurde.
Dadurch wird sichergestellt, dass bei Verwendung eines Container Images der NoseOver GmbH auf den ersten Blick klar ist, um welche Komponente es sich handelt, welche Versionsnummer die Komponente trägt und an welchem Datum und zu welcher Uhrzeit die Komponente gebaut wurde.
Als Beispiel sei hier die Monitoring Komponente Prometheus aufgeführt. Unser Image mit Stand Februar 2020 trägt demzufolge den folgenden Namen.
Prometheus:v2.16.0-20200214082928
Übersetzt würde das bedeuten, dass dieses Container Image die Komponente Prometheus in der Version 2.16.0 enthält und am 14.02.2020 um 08:29:28 Uhr gebaut wurde.
Damit ist der maximale Informationsgehalt gegeben, den man aus dem Namen des Images herauslesen kann.
Wir vermeiden also an dieser Stelle den generellen Einsatz des „latest“ Tags im Containerbau und setzen lieber auf maximale Transparenz bezüglich der Inhalte unserer Container Images.