it-swarm.com.de

Einen laufenden Docker-Container sichern?

Kann ich einen laufenden Docker-Container sichern? Ist der Befehl export dafür geeignet?

56
Slava V

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!

36
JuliandotNut

export hat einige Einschränkungen: Datenvolumen wird nicht exportiert. 

Hier ist Datenvolumen bedeutet: 

  1. In der Docker-Datei des Bildes ist eine VOLUME definiert.
  2. Der Container wird mit einem Parameter wie dem folgenden gestartet: -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:

  1. Besuchen Sie die Daten: (in einer Bash)

docker run -it --volumes-from target_container ubuntu bash

  1. Backup zum Host: (ein Postgres-Container)

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"

7
semicircle21

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>
0
Brian Ogden