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:

Listen Sie alle Container auf, um den eben bearbeiteten zu finden:

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:

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.

Quelle: vultr.com

Jetzt 200€ Guthaben sichern

Registrieren Sie sich jetzt in unserer ccloud³ und erhalten Sie 200€ Startguthaben für Ihr Projekt.

Das könnte Sie auch interessieren: