Lister toutes les images Docker :
docker imagesSauvegarder toutes les images Docker :
Pour sauvegarder toutes les images, vous pouvez utiliser une boucle pour les sauvegarder une par une. Voici un exemple de script bash :
for image in $(docker images -q); do
   docker save -o "/chemin/vers/sauvegarde/image_$(echo $image | tr ':' '_').tar" $image
doneLister tous les conteneurs en cours d'exécution :
docker psLister tous les conteneurs (y compris ceux arrêtés) :
docker ps -aCréer une image à partir de chaque conteneur :
Pour sauvegarder tous les conteneurs, vous pouvez également utiliser une boucle :
for container in $(docker ps -aq); do
   docker commit $container "image_from_container_$container"
   docker save -o "/chemin/vers/sauvegarde/image_from_container_$container.tar" "image_from_container_$container"
doneLister tous les volumes Docker :
docker volume lsSauvegarder chaque volume :
Pour sauvegarder tous les volumes, vous pouvez utiliser une boucle avec Alpine :
for volume in $(docker volume ls -q); do
   docker run --rm -v $volume:/volume -v /chemin/vers/sauvegarde:/backup alpine sh -c "cd /volume && tar czf /backup/${volume}_data.tar.gz ."
doneUtilisez scp ou rsync pour transférer tous les fichiers tar (images et données de volume) vers le serveur B. Voici un exemple avec scp :
scp /chemin/vers/sauvegarde/*.tar utilisateur@serveur_b:/chemin/vers/destination/Connectez-vous au serveur B :
ssh utilisateur@serveur_bImporter toutes les images Docker :
Pour importer toutes les images, vous pouvez utiliser une boucle :
for file in /chemin/vers/destination/*.tar; do
   docker load -i "$file"
doneCréer chaque volume sur le serveur B :
Pour chaque volume que vous avez sauvegardé, créez-le sur le serveur B :
for volume in $(docker volume ls -q); do
   docker volume create $volume
doneRestaurer les données de chaque volume :
Pour restaurer les données de chaque volume, utilisez une boucle :
for file in /chemin/vers/destination/*_data.tar.gz; do
   volume_name=$(basename "$file" _data.tar.gz)
   docker run --rm -v $volume_name:/volume -v /chemin/vers/destination:/backup alpine sh -c "cd /volume && tar xzf /backup/$(basename "$file")"
doneAprès l'importation, vous pouvez vérifier que toutes les images et volumes ont bien été importés en utilisant :
docker images
docker volume lsInstallation de Docker : Assurez-vous que Docker est installé et en cours d'exécution sur les deux serveurs.
Gestion des volumes : Les volumes Docker sont utilisés pour stocker des données persistantes. Ils ne sont pas inclus dans les images Docker et doivent être sauvegardés séparément. Assurez-vous de bien gérer les volumes si vos conteneurs en utilisent, car cela peut affecter le fonctionnement de vos applications.
Adaptation des commandes : Les commandes sont adaptées pour utiliser Alpine comme image de base pour les opérations dans les conteneurs.
QA on Linode, 2. manpage, 3. Wikipedia, 4. Debian Wiki, 5. Arch Wiki, 6. Gentoo Wiki