Docker DataVolume編 ~データは大事~

永続化データ

新しいバージョンのコンテナがデプロイされても以前のバージョンのコンテナで利用していた ファイル・ディレクトリをそのまま継続して利用できるためにData Volumeが利用される。

Data Volume

コンテナ内のディレクトリをディスクに永続化するための仕組みで、 ホスト・コンテナ間でのディレクトリの共有・再利用が可能になる。 イメージの更新や、コンテナを破棄してもディスクに保持されるので ステートフル(状態保持)なアプリケーションを実行するために使用。

docker container run [options] -v ホスト側ディレクトリ:コンテナ側ディレクトリ リポジトリ名[:タグ] [コマンド] [コマンド引数]


Data Volumeコンテナ(*推奨)

Data Volumeコンテナはデータだけを持つためのコンテナでコンテナ間でディレクトリを共有する。 VolumeはDockerの管理領域であるホスト側の/var/lib/docker/volume/以下に配属されている。 DataVolumeコンテナによって操作がカプセル化される。

データのエクスポートとリストア

Data Volumeコンテナは、同一のDockerホスト内でのみ有効である。
データを他のDockerホストにもリストア(復旧)したい場合はデータを ファイルとして取り出す必要がある。

手順

手順は、新たにコンテナを実行し、Data Volumeコンテナを指定する。 コンテナの中でtarコマンドでアーカイブを行い、出力先にマウントする。 別のホストにリストアする場合は、アーカイブを展開したData Volumeコンテナを作成する。

その他

docker image save はDockerイメージをファイルとしてアーカイブする機能のため Data Volumeには適用されないので注意。
ただDockerは複数ホストをまたいだポータビリティには課題があるので、 Netshare pluginなどのVolume Pluginが開発されている。