Dockerのボリューム入門:bind mountでデータを永続化する
2024-11-023分で読める
ボリューム永続化を行わないとデータの消失リスクが高まります。本記事では、bind mountの特徴と、永続化の手順を詳しく解説します。
2024-10-273分で読める
今回の記事は「Dockerのボリューム永続化が重要な理由とその方法」の続きとなります。
ボリューム永続化方法にはvolumesを使用する方法とbind mountの2つがあります。この記事ではvolumesについて掘り下げて解説していきます。
volumesを使用する場合、Dockerが管理するファイルシステムにデータを保存します。
メリット:Dockerが管理するファイルシステムなのでファイルへのアクセスが速いです。
使用例:データベースなどのデータのやりとりが多いアプリケーションで使用します。
本記事では、データベース(postgres)のイメージを使用してデータベースを作成し、作成したデータベースが永続化されることを確認します。
早速、リソースを準備していきましょう。
今回は「postgres:17.0」のイメージを使用していきます。以下の内容でDockerfileを作成しましょう。
DockerfileFROM postgres:17.0
作成したDockerfileを使用し、volumesで永続化する方法を見ていきましょう!
Dockerfileを作成したディレクトリで「docker build」コマンドを実行しましょう。
ターミナルdocker build . -t postgres

作成したイメージでコンテナを起動していきましょう。
オプションの解説
ターミナルdocker run --name db -d --rm -e POSTGRES_PASSWORD=postgres -v postgres_volume:/var/lib/postgresql/data postgres
コンテナが起動し、VOLUMESの個所に「postgres_volume」が追加されていることを確認してください。

データベースを作成するためにdbコンテナにシェルをアタッチして作業していきます。

以下、postgresのコマンドで現在のデータベースを確認し、testという名前のデータベースを作成、作成できていることを確認しましょう。
posggresコンテナpsql -h localhost -U postgres -d postgres -c "\l" psql -h localhost -U postgres -d postgres -c "create database test;" psql -h localhost -U postgres -d postgres -c "\l"
「create database」でtestデータベースが作成されることを確認します。

コンテナを削除し、再度起動したときにtestデータベースが残っていることを確認していきます。

コンテナの起動(volumesオプション)で実行したコンテナ起動コマンドを再度実行します。
ターミナルdocker run --name db -d --rm -e POSTGRES_PASSWORD=postgres -v postgres_volume:/var/lib/postgresql/data postgres
postgresにtestデータベースがあるか「\l」コマンドで確認してみましょう。
posggresコンテナpsql -h localhost -U postgres -d postgres -c "\l"
下図のようにtestデータベースが存在する場合、コンテナを削除してもデータが残っている(永続化できている)状態になっています。お疲れさまでした!

今回はvolumesでデータを永続化する方法についてハンズオン形式でやってみました。これでコンテナを削除したときにデータが消えてしまうということはないでしょう!
今回の記事が役に立った、ほかにも記事が見たいという方は最新情報を公式Xで配信しているのでフォローお願いします!
2024-11-023分で読める
ボリューム永続化を行わないとデータの消失リスクが高まります。本記事では、bind mountの特徴と、永続化の手順を詳しく解説します。
2024-10-252分で読める
ボリューム永続化を行わないとデータの消失リスクが高まります。本記事では、Dockerのvolumesとbind mountの特徴と、永続化の手順を詳しく解説します。
2024-12-015分で読める
Dockerで開発を進めるのであれば必須!複数コンテナを一括管理するdocker-composeについて解説します。