Docker Images werden über Tags versioniert, um unterschiedliche Releases einer Anwendung eindeutig zu kennzeichnen. Ein konsistentes Versioning erleichtert Deployments, Rollbacks und die Zusammenarbeit in Teams. In diesem Tutorial werden die Grundlagen von Docker Image Tags, Semantic Versioning (SemVer) und Rollback-Strategien erläutert, um produktive Container-Umgebungen sicher zu betreiben.
Docker Image Tags
Ein Tag ist ein Label, das einem Docker Image zugeordnet wird. Standardmäßig wird der Tag latest verwendet, es können jedoch beliebige Versionsnummern oder Labels vergeben werden.
Tag Syntax
docker build -t myapp:1.0.0 .
docker push myrepo/myapp:1.0.0
docker pull myrepo/myapp:1.0.0
- Tags ermöglichen die Unterscheidung zwischen verschiedenen Versionen eines Images
- Mit
latestkann immer die aktuelle Version referenziert werden, jedoch ist dies nicht für produktive Deployments empfohlen - Explizite Versionsangaben erhöhen die Vorhersagbarkeit
Semantic Versioning (SemVer)
Semantic Versioning ist ein weit verbreitetes Schema zur Versionskontrolle, das aus drei Zahlen besteht: MAJOR.MINOR.PATCH.
- MAJOR: Inkompatible API-Änderungen
- MINOR: Neue Funktionen, abwärtskompatibel
- PATCH: Fehlerbehebungen, abwärtskompatibel
Beispiel SemVer-Tags
myapp:2.1.0 # Major 2, Minor 1, Patch 0
myapp:2.1.1 # Patch 1 für Bugfixes
myapp:2.2.0 # Minor Update mit neuen Features
SemVer erleichtert die Nachverfolgbarkeit von Änderungen und die gezielte Aktualisierung von Containern.
Latest vs. spezifische Versionen
Die Verwendung von latest kann in Entwicklung praktisch sein, birgt aber Risiken in der Produktion:
- Unvorhergesehene Änderungen können Deployments destabilisieren
- Rollback auf vorherige Versionen wird erschwert
- Empfehlung: Immer spezifische SemVer-Tags in Produktionsumgebungen nutzen
Rollbacks mit Docker Images
Mit klaren Tags und Versioning lassen sich fehlerhafte Deployments schnell zurücksetzen.
Rollback Beispiel
# Aktuelle Version 2.1.1 wird zurückgesetzt auf 2.1.0
docker stop myapp_container
docker rm myapp_container
docker run -d --name myapp_container myrepo/myapp:2.1.0
- Rollback wird einfach durch Angabe des vorherigen Tags durchgeführt
- Container werden gestoppt, gelöscht und mit der stabilen Version neu gestartet
- CI/CD-Pipelines können Rollbacks automatisieren
Best Practices für Image Versioning
- SemVer verwenden, um Änderungen klar zu kommunizieren
- Immer spezifische Tags in Produktionsumgebungen nutzen
latestnur für Entwicklung oder Testing einsetzen- Builds in CI/CD-Pipelines versionieren und automatisiert pushen
- Rollback-Prozesse testen und dokumentieren
- Regelmäßig alte Tags und Images bereinigen, um Speicherplatz zu sparen
- Labels zur Dokumentation von Build-Informationen im Image verwenden
Praxisbeispiele
Node.js-Anwendung versionieren
docker build -t myapp:1.0.0 .
docker push myrepo/myapp:1.0.0
docker build -t myapp:1.1.0 .
docker push myrepo/myapp:1.1.0
Python-App mit Rollback
docker run -d --name py_app myrepo/py_app:2.2.0
# Fehler entdeckt, Rollback auf 2.1.1
docker stop py_app
docker rm py_app
docker run -d --name py_app myrepo/py_app:2.1.1
CI/CD-Pipeline Integration
# Automatisches Tagging in GitHub Actions
docker build -t myrepo/myapp:${{ github.sha }} .
docker push myrepo/myapp:${{ github.sha }}
Zusammenfassung
Docker Image Versioning ist essenziell für stabile und reproduzierbare Deployments. Durch die Nutzung von Tags, Semantic Versioning und gezielten Rollbacks lassen sich Updates kontrolliert durchführen und Fehler in Produktionssystemen schnell beheben. Best Practices wie das Vermeiden von latest in Produktion, die Dokumentation der Versionen und die Integration in CI/CD-Pipelines erhöhen Sicherheit, Vorhersagbarkeit und Effizienz in modernen Container-Umgebungen.
Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3
Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.
Meine Leistungen umfassen:
-
Professionelle Konfiguration von Routern und Switches
-
Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen
-
Erstellung von Topologien und Simulationen in Cisco Packet Tracer
-
Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG
-
Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible
-
Erstellung von Skripten für wiederkehrende Netzwerkaufgaben
-
Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege
-
Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting
Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.











