อัพเดท 2
สคริปต์ทุบตีการสำรองข้อมูลแบบดิบเดียว:
#!/bin/bash
# This script allows you to backup a single volume from a container
# Data in given volume is saved in the current directory in a tar archive.
CONTAINER_NAME=$1
VOLUME_NAME=$2
usage() {
echo "Usage: $0 [container name] [volume name]"
exit 1
}
if [ -z $CONTAINER_NAME ]
then
echo "Error: missing container name parameter."
usage
fi
if [ -z $VOLUME_NAME ]
then
echo "Error: missing volume name parameter."
usage
fi
sudo docker run --rm --volumes-from $CONTAINER_NAME -v $(pwd):/backup busybox tar cvf /backup/backup.tar $VOLUME_NAME
สคริปต์การทุบตีคืนค่าดิบแบบเล่มเดียว:
#!/bin/bash
# This script allows you to restore a single volume from a container
# Data in restored in volume with same backupped path
NEW_CONTAINER_NAME=$1
usage() {
echo "Usage: $0 [container name]"
exit 1
}
if [ -z $NEW_CONTAINER_NAME ]
then
echo "Error: missing container name parameter."
usage
fi
sudo docker run --rm --volumes-from $NEW_CONTAINER_NAME -v $(pwd):/backup busybox tar xvf /backup/backup.tar
การใช้งานสามารถเป็นเช่นนี้:
$ volume_backup.sh old_container /srv/www
$ sudo docker stop old_container && sudo docker rm old_container
$ sudo docker run -d --name new_container myrepo/new_container
$ volume_restore.sh new_container
ข้อสันนิษฐานคือ: ไฟล์สำรองชื่อ backup.tar ซึ่งอยู่ในไดเรกทอรีเดียวกันกับสคริปต์สำรองและกู้คืนชื่อวอลุ่มจะเหมือนกันระหว่างคอนเทนเนอร์
UPDATE
สำหรับฉันแล้วดูเหมือนว่าการสำรองปริมาณจากภาชนะบรรจุไม่แตกต่างจากปริมาณสำรองจากบรรจุข้อมูล
ปริมาณไม่มีอะไรอื่นนอกจากเส้นทางเชื่อมโยงไปยังภาชนะเพื่อให้กระบวนการเดียวกัน
ฉันไม่ทราบว่าการสำรองข้อมูลนักเทียบท่าทำงานได้กับไดรฟ์ข้อมูลคอนเทนเนอร์เดียวกันหรือไม่ แต่คุณสามารถใช้:
sudo docker run --rm --volumes-from yourcontainer -v $(pwd):/backup busybox tar cvf /backup/backup.tar /data
และ:
sudo docker run --rm --volumes-from yournewcontainer -v $(pwd):/backup busybox tar xvf /backup/backup.tar
สิ้นสุดการอัพเดท
มีเครื่องมือที่ดีที่มีให้ซึ่งช่วยให้คุณสามารถสำรองและกู้คืนคอนเทนเนอร์ของนักเทียบท่าปริมาณ:
https://github.com/discordianfish/docker-backup
หากคุณมีคอนเทนเนอร์เชื่อมโยงกับบางคอนเทนเนอร์เช่น:
$ docker run --volumes-from=my-data-container --name my-server ...
คุณสามารถสำรองข้อมูลไดรฟ์ทั้งหมดเช่นนี้:
$ docker-backup store my-server-backup.tar my-server
และคืนค่าเช่นนี้:
$ docker-backup restore my-server-backup.tar
หรือคุณสามารถทำตามวิธีการอย่างเป็นทางการ:
วิธีการโอนย้ายไดรฟ์ข้อมูลอย่างเดียวจากโฮสต์หนึ่งไปยังอีกโฮสต์หนึ่ง