8.1 Tagging in Docker
Tagging in Docker ist der Prozess, einem Image ein Label zuzuweisen, das die Versionsverwaltung erleichtert. Es macht das Deployment und die Aktualisierung von Anwendungen bequemer und überschaubarer. In dieser Vorlesung werden wir im Detail behandeln, was Tags sind, wie man sie verwendet und welche Empfehlungen dir helfen, effizienter mit ihnen zu arbeiten.
Ein Tag (Tag) in Docker ist ein Label, das es ermöglicht, eine bestimmte Version eines Images zu identifizieren. Tags vereinfachen die Nachverfolgung von Änderungen und helfen dabei, die richtigen Versionen für verschiedene Umgebungen wie Entwicklung, Test und Produktion auszuwählen.
Grundlegende Konzepte von Tags:
- Eindeutigkeit: Ein Tag identifiziert eindeutig eine bestimmte Version eines Images.
- Versionierung: Tags werden verwendet, um Image-Versionen zu kennzeichnen, zum Beispiel v1.0, v2.0, latest.
- Flexibilität: Tags werden verwendet, um Images zu erstellen, die bestimmten Entwicklungsphasen entsprechen, zum Beispiel
beta
,stable
,prod
.
8.2 Wie man Tags verwendet
1. Tags beim Build eines Images zuweisen
Du kannst einem Image beim Build mit dem Parameter -t
des Befehls docker build
ein Tag zuweisen.
Beispiel:
In diesem Beispiel wird das Image mit dem Namen myapp
und dem Tag 1.0 erstellt.
docker build -t myapp:1.0 .
2. Zusätzliche Tags für ein bestehendes Image zuweisen
Du kannst einem bereits bestehenden Image mit dem Befehl docker tag
zusätzliche Tags hinzufügen.
Beispiel:
In diesem Beispiel wird dem Image myapp:1.0
ein zusätzlicher Tag latest
zugewiesen.
docker tag myapp:1.0 myapp:latest
3. Tags beim Start eines Containers verwenden
Wenn du einen Container startest, kannst du den spezifischen Tag des Images angeben, das du verwenden möchtest.
Beispiel:
In diesem Beispiel wird ein Container basierend auf dem Image myapp
mit dem Tag 1.0
gestartet.
docker run -d myapp:1.0
8.3 Praxis des Taggings
Verwendung von Semantischer Versionierung
Die Semantische Versionierung (Semantic Versioning) ist eine Standardpraxis zur Vergabe von Versionen, die hilft, das Niveau der Änderungen eines Images zu verstehen.
Format der Semantischen Versionierung:
<major>.<minor>.<patch>
Wo:
-
major
: Wichtige Änderungen, die nicht mit vorherigen Versionen kompatibel sind. -
minor
: Neue Features, die mit vorherigen Versionen kompatibel sind. -
patch
: Fehlerbehebungen und andere kleinere Änderungen.
Beispiel:
docker build -t myapp:2.1.3 .
Verwendung von Zusatzlabels
Zusatzlabels helfen, den Zustand eines Images zu kennzeichnen, z. B. beta
, alpha
, stable
oder prod
.
Beispiel:
docker build -t myapp:1.0-beta .
docker build -t myapp:1.0-stable .
Aktualisierung von Tags
Bei der Aktualisierung eines Images wird empfohlen, die Tags zu ändern, um Änderungen einfacher nachverfolgen zu können. Der Tag latest
wird oft verwendet, um die neueste Version eines Images zu kennzeichnen.
Beispiel:
docker build -t myapp:2.0 .
docker tag myapp:2.0 myapp:latest
8.4 Beispiele für die Verwendung von Tags
Beispiele für die Nutzung von Tags in verschiedenen Umgebungen:
Beispiel 1: Entwicklung
Für die Entwicklung werden oft Images mit Tags verwendet, die die aktuelle Version oder den Entwicklungsstatus kennzeichnen, wie z.B. dev
.
docker build -t myapp:dev .
docker run -d myapp:dev
Beispiel 2: Testing
In Testumgebungen werden Images mit Tags verwendet, die bestimmte Versionen oder Zustände kennzeichnen, wie z.B. beta.
docker build -t myapp:1.1-beta .
docker run -d myapp:1.1-beta
Beispiel 3: Produktion
In Produktionsumgebungen ist es wichtig, stabile und geprüfte Versionen von Images zu verwenden, die durch Tags wie stable
, prod
oder semantische Versionen wie 1.1.0-stable
gekennzeichnet sind.
docker build -t myapp:1.1.0-stable .
docker run -d myapp:1.1.0-stable
8.5 Beste Praktiken
1. Immer semantische Versionierung verwenden
Halte dich an semantische Versionierung für alle Images. Das hilft, Änderungslevel klar zu unterscheiden und erleichtert das Versionsmanagement.
2. Verständliche und aussagekräftige Tags verwenden
Verwende Tags, die den Zustand oder das Ziel des Images klar wiedergeben (z. B. beta
, stable
, prod
).
3. Vermeide die Nutzung von latest in der Produktion
Der Tag latest
kann nützlich für Entwicklung und Tests sein, aber in der Produktion sollte man spezifische Versionen verwenden, um unvorhersehbare Änderungen zu vermeiden.
4. Die Nutzung von Tags dokumentieren
Dokumentiere, wie und für welchen Zweck die Tags in deinem Projekt verwendet werden. Das hilft dem Team, den Versionierungsprozess besser zu verstehen und Fehler zu minimieren.
Beispiele für Dockerfile mit Tags
Beispiel 1: Erstellen und Zuweisen von Tags
# Dockerfile für Version 1.0.0
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "app.js"]
Befehle zum Bauen und Taggen
docker build -t myapp:1.0.0 .
docker tag myapp:1.0.0 myapp:stable
Beispiel 2: Image aktualisieren und taggen
# Dockerfile für Version 1.1.0 mit neuer Funktion
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN rm -rf /app/tests /app/docs
ENV NODE_ENV=production
EXPOSE 3000
CMD ["node", "app.js"]
Befehle zum Bauen und Taggen
docker build -t myapp:1.1.0 .
docker tag myapp:1.1.0 myapp:latest
GO TO FULL VERSION