【Docker基礎】ボリュームマウントの確認方法

ボリュームのバックアップ
これまで、コンテナが保持するデータを消さずに保存するためにボリュームマウントという仕組みがあると学びました。しかし、ボリュームマウント自体には「バインドマウント」と違ってホスト上で直接ファイルを扱う手軽さがなく、バックアップするのも一筋縄ではいきません。
そこでここでは、ボリュームのバックアップ方法として、Docker 公式も推奨する「別の Linux コンテナ(例えば BusyBox)で tar コマンドを使って圧縮&保存する」という手順を解説します。

1.なぜボリュームのバックアップが難しいのか?
- バインドマウントの場合 → ホスト側ディレクトリをそのままコピーすればOK
- ボリュームマウントの場合 → ボリュームは Docker Engine が管理するパスにあり、ホストから直接アクセスしにくい
- volume inspect や container inspect で場所やマウント状態はわかるが、実際のファイル操作がしづらい
2.バックアップの流れ(概念)

- メインコンテナを停止(あるいはコンテナが存在しない状態)
・データが書き換わらないようにする。 - 別の Linux コンテナを起動し、tar コマンドでボリュームを圧縮&保存
・docker run --rm
オプションで、使い終わったらコンテナ自体を消す。 - 圧縮ファイル(.tar.gz など) をホスト側にマウントしたディレクトリへ書き出す。
・後でホストで自由に扱えるようにする。
3.コマンド例
docker run --rm
-v <ボリューム名>:/src
-v <ホスト上のバックアップ先フォルダ>:/dest
busybox tar czvf /dest/<バックアップファイル名>.tar.gz -C /src .
--rm
: コンテナ終了後にコンテナ自体を削除-v ボリューム名:/src
: ボリュームを/src
にマウント(ボリュームマウント)-v バックアップ先フォルダ:/dest
: ホスト上のフォルダを/dest
にマウント(バインドマウント)busybox
: 軽量の Linux イメージtar czvf /dest/~ -C /src .
:/src
(ボリューム)内を.tar.gz
に圧縮し、/dest
(ホスト)側へ保存
4.リストア(復元)の例
docker run --rm \
-v <ボリューム名>:/src \
-v <バックアップ先フォルダ>:/dest \
busybox tar xzvf /dest/<バックアップファイル>.tar.gz -C /src
xzvf
: tarで解凍するオプション
5.ポイント
- バックアップ時はコンテナを停止
・書き込み中のデータがあると不整合が起きる。 - tar コマンドで圧縮ファイルを作る
・tar, gz, zip など形式はお好み - ホスト側フォルダに書き出す
・後で転送や保管が容易 - Docker社推奨の方法
・シンプルかつ OS に依存しにくい。
・バインドマウントと組み合わせて使う場面も多い。
まとめ
- ボリュームは直接ホストからアクセスしにくいため、別の Linux コンテナを介して tar で圧縮し、バックアップするのが一般的
- バックアップファイルはホスト側に書き出して保管し、必要に応じて リストア(復元)できる
- バインドマウントほど手軽ではありませんが、その分 環境依存を減らせる のがボリュームの強みです
次のコンテンツでは、コンテナのイメージ化について解説していきます。コンテナそのものではなく、コンテナをベースに新しいイメージを作る仕組みも Docker ではよく使われるテクニックです。