Est-il possible de sauvegarder un conteneur Docker en cours d'exécution? La commande export
est-elle appropriée pour cela?
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!
export
a quelques limitations: il n'exportera pas le volume de données} _.
Voici volume de données _ signifie:
VOLUME
définie dans le fichier Docker de l'image.-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:
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"
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>