🌟
Dockerのボリューム領域をバックアップする
概要
Docker は必要な領域をマウントするために2種類の方法を用意していますが、ここではボリューム領域のマウント時に特化した方法を書いてみることにしました。
はじめに(前提)
compose.ymlにのっとりDockerのMinIOが動いているとします。
compose.yml
version: "3"
services:
minio:
container_name: minio
image: minio/minio:latest
ports:
- 9000:9000
- 9001:9001
volumes:
- minio-volume:/data/
environment:
TZ: Asia:Tokyo
MINIO_ROOT_USER: minio
MINIO_ROOT_PASSWORD: minio123
logging:
driver: syslog
command: server /data --address :9000 --console-address :9001
volumes:
minio-volume:
name: minio-volume
バックアップ方法
いたってシンプルです。以下の本家の情報
に手を加えただけです。
$ docker run --rm -v minio-volume:/data/ -v ${PWD}/backup/:/backup/ ubuntu tar czvf /backup/data.tgz /data
試しにボリュームを消してみる
$ docker compose down
$ docker volume ls
local minio-volume
$ docker volume rm -f minio-volume
minio-volume
$ docker compose up -d
データが吹っ飛んでいるのを確認したところで…
リストア方法
バックアップと逆のことをすれば良いわけです。
$ docker compose down
$ docker run --rm -v minio-volume:/data/ -v ${PWD}/backup/:/backup/ ubuntu bash -c "cd /data && tar xvf /backup/data.tgz --strip 1"
$ docker compose up -d
データが復元されているのを確認して終了となります。
参考文献は以下の通りです。
終わりに
Dockerのボリュームマウントもバックアップが取れるとわかればDokcerも怖くなくなりますね。
Discussion