Dockerコンテナにおけるデータ永続化手法の解説

Dockerコンテナの運用において、データの永続化や複数コンテナ間でのデータ共有が必要となる場面があります。これを実現するための主な手法として「データボリューム」と「データボリュームコンテナ」の2つのアプローチがあります。

●データボリュームの基本概念

データボリュームはコンテナが利用できる特別なディレクトリで、ホストOSのディレクトリをコンテナ内に直接マッピングする仕組みです。以下のような利点があります:

・複数のコンテナでデータボリュームを共有・再利用可能 ・コンテナ内外からのデータ変更が即座に反映される ・データの更新がイメージに影響を与えない(アプリとデータの分離) ・使用中のコンテナが存在する限り永続的に保持される

  1. ホストディレクトリのマウント方法

まず、/home/user/shared/dataディレクトリにsample.txtとapp.logという2つのファイルを作成します。

docker run -d -it --name=app-container -v /home/user/shared/data:/app/data nginx:latest /bin/bash

コンテナにアクセスして/app/dataディレクトリを確認すると、上記の2つのファイルが表示されます。

docker exec -it a8b3c2d1e4f5 /bin/bash

sample.txtに内容を追加すると、ホスト側でも同じ変更が確認できます。

  1. コンテナ内でのデータボリューム作成

以下のコマンドでvolume-demoというコンテナを作成し、/storageというデータボリュームをコンテナ内に生成します。

docker run -d -it --name=volume-demo -v /storage centos:8 /bin/bash

●データボリュームコンテナの活用

先ほど作成したapp-containerを基準として、新しいコンテナを2つ作成し、app-containerのボリュームを継承します。

docker run -it --volumes-from app-container --name worker1 alpine:latest /bin/sh
docker run -it --volumes-from app-container --name worker2 alpine:latest /bin/sh

worker1コンテナ内でsample.txtに「updated by worker1」という文字列を追加します。その後、worker2コンテナで同じファイルを確認すると、変更内容が反映されていることがわかります。

さらに、worker1コンテナに再度アクセスしてファイルの内容を確認すると、worker2コンテナでの変更も同期されていることが確認できます。

タグ: Docker データボリューム コンテナ管理 永続化

5月14日 05:57 投稿