Next.js Logo

Dockerのボリューム入門:bind mountでデータを永続化する

thumbnail

今回の記事は「Dockerのボリューム永続化が重要な理由とその方法」の続きとなります。

ボリューム永続化方法にはvolumesを使用する方法とbind mountの2つがあります。この記事ではbind mountについて掘り下げて解説していきます。

bind mountで永続化の利点と使うケース

bind mountを使用するとホストの特定のディレクトリをコンテナと共有できます。

メリット:コンテナ内からホストのファイルを直接参照でき、ソースコードの修正が即時反映されるため、開発作業に便利です。

使用例:ソースコードなど、頻繁に更新する必要があるデータを扱う場合に適しています。

リソースの準備(Dockerfileの準備)

今回は「python:3.11.10」のイメージを使用していきます。以下の内容でDockerfileを作成しましょう。

Dockerfile

FROM python:3.11.10

bind mountで永続化する

作成したDockerfileを使用し、bind mountで永続化する方法を見ていきましょう!

イメージのビルド

Dockerfileを作成したディレクトリで「docker build」コマンドを実行しましょう。

ターミナル

docker build . -t python

イメージをビルド

コンテナの起動(bind mount)

作成したイメージでコンテナを起動していきましょう。

オプションの解説

ターミナル

docker run --name python -d --rm -it -v /home/work:/home python

コンテナが起動していることを確認しましょう。

コンテナを起動(bind mount)

pythonファイルを作成

pythonコンテナにシェルをアタッチし、コンテナ内でpythonファイルを作成します。

コンテナにアタッチ

pythonコンテナ

cd home echo 'print("hello")' > sample.py ls

sample.pyが作成されていることを確認します。

この時点でホスト側で作成しているDockerファイルが存在すると思います。つまり「ホスト側のファイルがコンテナに共有されている」ということになります。

pythonファイルを作成

ホスト側を確認する

ホスト側に作成したsample.pyが共有されることを確認しましょう。確認方法はホスト側で「ls」コマンドを実行します。

ターミナル

ls

他にもvscodeのホスト側ディレクトリを表示することでも確認できます。

このことから「コンテナのファイルがホスト側に共有されている」ということになります。

testデータベースがあるか確認

最後に

今回はbind mountでデータを永続化する方法についてハンズオン形式でやってみました。これでコンテナを削除したときにデータが消えてしまうということはないでしょう!

今回の記事が役に立った、ほかにも記事が見たいという方は最新情報を公式Xで配信しているのでフォローお願いします!