Docker における永続化
概要
Docker コンテナ内で扱うデータを、Docker コンテナ外部に永続化したいケースは多々ある。そのような場合に永続化の手段として用いることができるのは、大体以下の 3 パターン。 Volume とは、Docker によって生成&管理される専用の領域であり、これを指定してデータを永続化できる Docker コンテナ何からファイルシステム上にマウントを行うことで永続化する メモリ上にデータを書き込む
メモリなのでもちろん揮発する
以下にメリットデメリットなどがまとまっている。
Volume
基本のき
code:sh
# 作成する
docker volume create my-volume
# リストする
docker volume ls
# 詳細を確認する
docker volume inspect my-volume
# 削除する
docker volume rm my-volume
バックアップ/リストア/マイグレーション
code:sh
# バックアップ
docker run \
--rm \ # 実行が完了したらコンテナを削除する
--volumes-from my-container \ # 特定コンテナのVolumeを立ち上げるコンテナにマウントする
-v $(pwd):/backup \ # ホストOSの現在位置を、立ち上げるコンテナの/backupにマウント
ubuntu \ # Ubuntuイメージを選択
tar cvf /backup/backup.tar /my-volume # my-volumeのデータをtarに固める
# リストア
docker run \
--rm \
--volumes-from my-container \
-v $(pwd):/backup \
ubuntu \
bash -c "cd /dbdata && tar xvf /backup/backup.tar --strip 1"