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;