Lister toutes les images Docker :
docker images
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 :
for image in $(docker images -q); do
docker save -o "/chemin/vers/sauvegarde/image_$(echo $image | tr ':' '_').tar" $image
done
Lister tous les conteneurs en cours d'exécution :
docker ps
Lister tous les conteneurs (y compris ceux arrêtés) :
docker ps -a
Cré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"
done
Lister tous les volumes Docker :
docker volume ls
Sauvegarder 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 ."
done
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
:
scp /chemin/vers/sauvegarde/*.tar utilisateur@serveur_b:/chemin/vers/destination/
Connectez-vous au serveur B :
ssh utilisateur@serveur_b
Importer 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"
done
Cré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
done
Restaurer 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")"
done
Après l'importation, vous pouvez vérifier que toutes les images et volumes ont bien été importés en utilisant :
docker images
docker volume ls
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.
QA on Linode, 2. manpage, 3. Wikipedia, 4. Debian Wiki, 5. Arch Wiki, 6. Gentoo Wiki