Kann ich einen laufenden Docker-Container sichern? Ist der Befehl export
dafür geeignet?
Geposted von einem Freund in Kommentaren
Hallo Slava, sorry, dass deine Frage geschlossen wurde. Für das Protokoll spricht Slava von docker.io, einer Laufzeitumgebung für Linux-Container. Ja, docker export
ist ein geeigneter Ansatz. Es wird ein Tarball des gesamten Status des Container-Dateisystems erstellt und auf stdout abgelegt. So
docker export $CONTAINER_ID > $CONTAINER_ID-backup.tar
wird eine nutzbare Tarball ergeben. Sie können das Archiv erneut mit importieren
docker import - slava/$CONTAINER_ID-backup < $CONTAINER_ID-backup.tar
Beachten Sie, dass die ursprünglichen Metadaten (z. B. die ID des Originalbilds) verloren gehen. Dies sollte in zukünftigen Docker-Versionen behoben werden. – Solomon Hykes 2. April 13 um 06:35
Wenn Sie hier hinzufügen, können Sie anhand der Zusammenfassung finden, dass die Frage beantwortet wurde. Danke Salomo!
export
hat einige Einschränkungen: Datenvolumen wird nicht exportiert.
Hier ist Datenvolumen bedeutet:
VOLUME
definiert.-v /webapp
Weitere Informationen zu den Daten: https://docs.docker.com/userguide/dockervolumes/
Um dies zu umgehen, starten Sie einen neuen Container mit dem Parameter "--volumes-from", um diesen Container anzuhängen, damit Sie das Datenvolumen aufrufen können.
Beispiele:
docker run -it --volumes-from target_container ubuntu bash
docker run -it --volumes-from some_postgres -v /Host/path:/container/path --rm ubuntu bash -c "tar -cvf /container/path/postgres-backup.tar /var/lib/postgresql/data"
Die Verwendung von docker commit
ist meine bevorzugte Methode zum Sichern eines Containers (gestartet oder angehalten). Erzeugt ein Bild, das Sie benennen können:
docker commit - p <container_id> <backup-name>