Wie man Änderungen an einem Docker-Image committet
Docker ist eine Open-Source-Plattform, die entwickelt wurde, um Anwendungen in leichtgewichtigen, isolierten Containern bereitzustellen, zu skalieren und zu verwalten. Diese Container bündeln Anwendungen zusammen mit allen notwendigen Abhängigkeiten, um eine konsistente Ausführung über verschiedene Umgebungen hinweg sicherzustellen. Änderungen innerhalb eines laufenden Containers – wie das Installieren von Paketen oder das Bearbeiten von Dateien – sind nur temporär. Werden Container gelöscht oder neu erstellt, gehen diese Anpassungen verloren, es sei denn, Volumes werden genutzt, um Daten dauerhaft zu speichern. Stoppt man einen Container, bleibt sein Zustand jedoch erhalten und kann mit denselben Daten erneut gestartet werden. Docker bewahrt das Dateisystem und die Metadaten des Containers auf, bis er ausdrücklich entfernt wird.
In dieser Anleitung wird erklärt, wie man mit den aktuellen Docker-CLI-Befehlen Änderungen an einem Docker-Image committen kann. Schritt-für-Schritt-Beispiele, Erläuterungen der Optionen sowie Best Practices helfen Ihnen, den docker container commit
-Befehl sinnvoll in Ihren Workflow zu integrieren.
docker container commit vs docker image push
Funktion | docker container commit | docker image push |
---|---|---|
Zweck | Erstellt ein neues Image aus einem laufenden oder gestoppten Container | Lädt ein lokales Image in ein entferntes Registry hoch |
Anwendungsfall | Wird genutzt, um nach Änderungen am Container dessen Zustand zu sichern | Dient zum Teilen von Images zwischen Systemen oder Nutzern |
Quelle | Laufender oder gestoppter Container | Bereits bestehendes Docker-Image |
Ziel | Lokaler Docker-Image-Speicher | Remote-Registry |
Persistenz | Sichert Container-Änderungen lokal als neues Image | Stellt Images für den Einsatz auf anderen Systemen bereit |
Typischer Workflow | Entwicklung, Debugging oder Snapshot eines Containerzustands | Deployment und Versionierung in verschiedenen Umgebungen |
Die Kurzfassung
Die wichtigsten Befehle, um Änderungen aus einem laufenden Container zu committen, ein neues Image zu erzeugen und dieses bei Bedarf in ein Registry hochzuladen:
# Laufende Container auflisten und den relevanten Container identifizieren
$ docker container ls
# Container mit Beschreibung als neues Image committen
$ docker container commit -m "Save config" :
# Lokale Images auflisten, um die Erstellung zu bestätigen
$ docker image ls
# Image für ein Registry taggen
$ docker image tag : /:
# Image in ein entferntes Registry pushen
$ docker image push /:
Befehl verwenden
Der Befehl docker container commit
erstellt ein neues Image aus dem aktuellen Zustand eines laufenden oder gestoppten Containers. Er wird ausgeführt, nachdem man Änderungen wie das Installieren von Paketen oder das Konfigurieren von Software vorgenommen hat, um diese dauerhaft in einem wiederverwendbaren Image zu sichern.
Die allgemeine Syntax lautet:
docker container commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
Befehlsoptionen
Option | Beschreibung |
---|---|
-m, –message | Fügt eine Commit-Nachricht hinzu, die die Änderungen am Container beschreibt. |
-a, –author | Legt den Autorennamen und die E-Mail für das neue Image fest (z. B. „Alice <alice@example.com>“). |
-p, –pause | Pausiert den Container während des Commit-Vorgangs (standardmäßig aktiviert). |
-c, –change | Wendet Dockerfile-Anweisungen wie CMD, ENV oder EXPOSE auf das neue Image an. |
Hinweis: Der Befehl docker container commit
erfasst interne Änderungen im Container, schließt jedoch Daten in gemounteten Volumes oder externem Speicher aus.
Änderungen in ein neues Docker-Image committen
So gehen Sie vor, um Änderungen aus einem modifizierten Container in ein neues Image zu übernehmen:
Zuerst starten Sie einen Container aus einem Basis-Image mit dem Flag -it
, um eine interaktive Terminal-Sitzung zu öffnen:
$ docker container run -it ubuntu /bin/bash
Dieser Befehl lädt das neueste Ubuntu-Image von Docker Hub (falls lokal nicht vorhanden) und öffnet eine Bash-Shell als Root-User.
Innerhalb des Containers können Sie Änderungen vornehmen. Beispiel: Aktualisieren Sie die Paketliste und installieren Sie Nmap, ein Tool zur Netzwerksicherheit:
# apt update && apt install nmap -y
Beenden Sie den Container. Er stoppt, aber Docker behält seinen Zustand, sodass Sie die Änderungen committen können:
# exit
Listen Sie alle Container auf, um den eben bearbeiteten zu finden:
$ docker container ls -a
Der modifizierte Container wird angezeigt. Kopieren Sie dessen Container-ID für den nächsten Schritt. Beispielausgabe:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fbd1f006ee67 ubuntu "/bin/bash" Vor einer Minute Exited (0) vor 17 Sekunden gracious_dijkstra
Committen Sie den Container als neues Image:
$ docker container commit -m "Installed Nmap" fbd1f006ee67 ubuntu-with-nmap:v1
Ersetzen Sie fbd1f006ee67
durch die kopierte Container-ID und ubuntu-with-nmap:v1
durch den gewünschten Image-Namen und Tag. Docker gibt die Image-ID zurück, wenn der Befehl erfolgreich war:
sha256:4ab8382015ea03a117a76a38dab41d6e291ecaad3b570d018d336dc5c81b9ac7
Überprüfen Sie, ob das Image erstellt wurde:
$ docker image ls
Ihr benutzerdefiniertes Image und Tag erscheinen in der Ausgabe, ähnlich wie hier:
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu-with-nmap v1 4ab8382015ea vor 31 Sekunden 158MB
ubuntu latest a0e45e2ce6e6 vor 13 Tagen 78.1MB
Wann man Änderungen committen sollte
Mit dem Befehl docker container commit
lassen sich Änderungen, die innerhalb eines laufenden Containers vorgenommen wurden, als neues Image speichern. Das ist in folgenden Szenarien hilfreich:
- Tools oder Pakete installieren: Fügen Sie zusätzliche Programme wie Nmap oder eigene Skripte in einem Container hinzu und speichern Sie die konfigurierte Umgebung zur späteren Wiederverwendung oder Bereitstellung.
- Konfigurationsänderungen übernehmen: Ändern Sie Systemeinstellungen oder definieren Sie Umgebungsvariablen, um die Leistung oder das Verhalten des Containers zu optimieren, und committen Sie diese Anpassungen, um sie dauerhaft zu sichern.
- Debugging- oder Testzustand festhalten: Nach dem Testen oder Fehlersuchen in einem Container können Sie den genauen Zustand committen, um ihn auf einem anderen System zu reproduzieren oder mit Ihrem Team zu teilen.
- Snapshot vor weiteren Änderungen erstellen: Sichern Sie eine Momentaufnahme Ihres Containers, bevor Sie Updates durchführen oder neue Pakete installieren – so können Sie bei Bedarf zurückrollen.
Auch wenn docker container commit
für schnelle Snapshots und kleine Workflows praktisch ist, eignet sich der Befehl nicht für Produktionsumgebungen. Für konsistente und reproduzierbare Builds in Team- oder Produktionsszenarien sollten stattdessen Dockerfiles mit Versionskontrolle genutzt werden. Dockerfiles bieten mehr Transparenz, Nachvollziehbarkeit und Kontrolle über Image-Konfigurationen.
Fazit
In diesem Tutorial haben Sie ein neues Docker-Image erstellt, indem Sie Änderungen aus einem laufenden Container mit den Docker-CLI-Befehlen committed haben. Sie haben einen Container gestartet, Anpassungen vorgenommen und diese als wiederverwendbares Image gespeichert. Zudem haben Sie erfahren, wann sich der Befehl docker container commit
eignet und wie er sich von docker image push
unterscheidet. Mit diesem Ansatz können Containeränderungen festgehalten und wiederverwendet werden, ohne ein Dockerfile zu schreiben. Für weiterführende Funktionen und Best Practices empfiehlt sich die offizielle Docker-Dokumentation.