Next.js Logo

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

thumbnail

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

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

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

volumesを使用する場合、Dockerが管理するファイルシステムにデータを保存します。

メリット:Dockerが管理するファイルシステムなのでファイルへのアクセスが速いです。

使用例:データベースなどのデータのやりとりが多いアプリケーションで使用します。

リソースの準備

本記事では、データベース(postgres)のイメージを使用してデータベースを作成し、作成したデータベースが永続化されることを確認します。

早速、リソースを準備していきましょう。

Dockerfileを準備する(データベースのイメージ)

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

Dockerfile

FROM postgres:17.0

volumesで永続化する

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

イメージのビルド

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

ターミナル

docker build . -t postgres

イメージをビルド

コンテナの起動(volumesオプション)

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

オプションの解説

ターミナル

docker run --name db -d --rm -e POSTGRES_PASSWORD=postgres -v postgres_volume:/var/lib/postgresql/data postgres

コンテナが起動し、VOLUMESの個所に「postgres_volume」が追加されていることを確認してください。

コンテナを起動(volumesオプション)

データベース作る

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

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データベースが作成されることを確認します。

dbコンテナにシェルをアタッチ

永続化できているか確認する

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

dbコンテナを停止・削除

コンテナの起動(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データベースが存在する場合、コンテナを削除してもデータが残っている(永続化できている)状態になっています。お疲れさまでした!

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

最後に

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

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