### Étape 1 : Lister et sauvegarder les images Docker sur le serveur A 1. **Lister toutes les images Docker** : ```bash docker images ``` 2. **Sauvegarder 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 : ```bash for image in $(docker images -q); do docker save -o "/chemin/vers/sauvegarde/image_$(echo $image | tr ':' '_').tar" $image done ``` ### Étape 2 : Lister et sauvegarder les conteneurs Docker 1. **Lister tous les conteneurs en cours d'exécution** : ```bash docker ps ``` 2. **Lister tous les conteneurs (y compris ceux arrêtés)** : ```bash docker ps -a ``` 3. **Créer une image à partir de chaque conteneur** : Pour sauvegarder tous les conteneurs, vous pouvez également utiliser une boucle : ```bash 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" done ``` ### Étape 3 : Lister et sauvegarder les volumes Docker 1. **Lister tous les volumes Docker** : ```bash docker volume ls ``` 2. **Sauvegarder chaque volume** : Pour sauvegarder tous les volumes, vous pouvez utiliser une boucle avec Alpine : ```bash 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 ." done ``` ### Étape 4 : Transférer les fichiers vers le serveur B Utilisez `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` : ```bash scp /chemin/vers/sauvegarde/*.tar utilisateur@serveur_b:/chemin/vers/destination/ ``` ### Étape 5 : Importer les images Docker sur le serveur B 1. **Connectez-vous au serveur B** : ```bash ssh utilisateur@serveur_b ``` 2. **Importer toutes les images Docker** : Pour importer toutes les images, vous pouvez utiliser une boucle : ```bash for file in /chemin/vers/destination/*.tar; do docker load -i "$file" done ``` ### Étape 6 : Restaurer les volumes Docker 1. **Créer chaque volume sur le serveur B** : Pour chaque volume que vous avez sauvegardé, créez-le sur le serveur B : ```bash for volume in $(docker volume ls -q); do docker volume create $volume done ``` 2. **Restaurer les données de chaque volume** : Pour restaurer les données de chaque volume, utilisez une boucle : ```bash 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")" done ``` ### Étape 7 : Vérifier l'importation Après l'importation, vous pouvez vérifier que toutes les images et volumes ont bien été importés en utilisant : ```bash docker images docker volume ls ``` ### Remarques - **Installation 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.