更新 2
raw 単一ボリューム バックアップの bash スクリプト:
#!/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
raw 単一ボリュームの復元 bash スクリプト:
#!/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 という名前で、バックアップおよび復元スクリプトと同じディレクトリに存在し、ボリューム名はコンテナ間で同じです。
アップデート
コンテナーからのボリュームのバックアップは、データ コンテナーからのボリュームのバックアップと変わらないように思えます。
ボリュームはコンテナーにリンクされたパスに他ならないため、プロセスは同じです。
docker-backup が同じコンテナー ボリュームでも機能するかどうかはわかりませんが、以下を使用できます。
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
更新を終了
docker ボリューム コンテナーをバックアップおよび復元できる便利なツールがあります。
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
または、公式の方法に従うこともできます。
あるホストから別のホストにデータのみのボリュームを移植する方法は?