web-dev-qa-db-fra.com

Sauvegarder un conteneur Docker en cours d'exécution?

Est-il possible de sauvegarder un conteneur Docker en cours d'exécution? La commande export est-elle appropriée pour cela?

56
Slava V

Publié par un ami en commentaires

Bonjour Slava, désolé que votre question soit close. Pour mémoire, Slava parle de docker.io, un runtime pour les conteneurs Linux. Oui, docker export est une approche appropriée. Il va générer une archive de l'intégralité de l'état de votre système de fichiers conteneur et le vider sur stdout Alors

docker export $CONTAINER_ID > $CONTAINER_ID-backup.tar 

donnera une archive utilisable. Vous pouvez réimporter la tarball avec 

docker import - slava/$CONTAINER_ID-backup < $CONTAINER_ID-backup.tar

Notez que les métadonnées d'origine (par exemple, l'id de l'image d'origine) seront perdues. Cela devrait être corrigé dans les futures versions de docker. – Solomon Hykes 2 avril 13 à 6:35

En ajoutant ici, on peut trouver dans le résumé que cette question a reçu une réponse. Merci Salomon!

36
JuliandotNut

export a quelques limitations: il n'exportera pas le volume de données} _. 

Voici volume de données _ signifie: 

  1. Il y a une VOLUME définie dans le fichier Docker de l'image.
  2. Le conteneur est démarré avec un paramètre comme celui-ci: -v /webapp

En savoir plus sur les données: https://docs.docker.com/userguide/dockervolumes/

Pour gérer cette situation, démarrez un nouveau conteneur avec le paramètre '--volumes-from' à accrocher sur ce conteneur afin que vous puissiez visiter le volume de données.

Exemples:

  1. Visitez les données: (dans une bash)

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

  1. Backup to Host: (un conteneur postgres)

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

Utiliser le docker commit est mon moyen préféré pour sauvegarder un conteneur (démarré ou arrêté) Crée une image que vous pouvez nommer:

docker commit - p <container_id> <backup-name>
0
Brian Ogden