🌟

Dockerのボリューム領域をバックアップする

2024/04/19に公開

概要

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

バックアップ方法

いたってシンプルです。以下の本家の情報

https://docs.docker.com/storage/volumes/#backup-restore-or-migrate-data-volumes

に手を加えただけです。

$ 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

データが復元されているのを確認して終了となります。

参考文献は以下の通りです。

https://qiita.com/KEINOS/items/05f98e847b6e1aabcb72

終わりに

Dockerのボリュームマウントもバックアップが取れるとわかればDokcerも怖くなくなりますね。

Discussion