Outils pour utilisateurs

Outils du site


tutoriaux:docker-related:migrate-docker

Migration de conteneurs docker

Backup des volumes de données

#!/bin/bash
 
# List all Docker volumes with name containing 'volumes'
volumes=$(docker volume ls --filter name=volumes | awk '{print $2}')
 
for volume in $volumes; do
  # Exclude the "DRIVER" line if it exists
  if [[ "$volume" != "DRIVER" ]]; then
    # Backup the volume to a tar.gz file in the current directory
    docker run --rm -v $volume:/volume -v $(pwd):/backup busybox tar czf /backup/${volume}.tar.gz -C /volume .
  fi
done
frater@hades:~# sudo docker volume ls --filter name=peertube | awk '{print $2}' | grep -v "DRIVER" | while read volume; do docker run --rm -v $volume:/volume -v $(pwd):/backup busybox tar czf /backup/${volume}.tar.gz -C /volume .; done

Restauration volumes des données

#!/bin/bash
 
# Loop through all .tar.gz files in the current directory
for backup in *.tar.gz; do
  # Extract the volume name from the filename (remove the .tar.gz extension)
  volume_name=$(basename "$backup" .tar.gz)
 
  # Create a Docker volume with the same name as the tar file
  docker volume create "$volume_name"
 
  # Unpack the contents of the tar.gz file into the newly created volume
  docker run --rm -v "$volume_name":/volume -v "$(pwd)":/backup busybox sh -c 'cd /backup && tar xzf $(basename /backup/"$volume_name".tar.gz)' -C /volume
done
frater@docker02:~# sudo for backup in ./*.tar.gz; do volume_name=$(basename "$backup" .tar.gz); docker volume create "$volume_name"; docker run --rm -v "$volume_name":/volume -v ./:/backup busybox tar xzf /backup/"$(basename "$backup")" -C /volume; done;
tutoriaux/docker-related/migrate-docker.txt · Dernière modification : 2025/04/25 15:54 de frater