Docker Volumeによるデータ管理
コンテナを削除するとデータが失われる理由を理解し、Docker volumeとバインドマウントを使ってデータを永続化・共有する方法を学びます。
「Docker Volumeによるデータ管理」はCoddyKit上の無料Docker & DevOps Fundamentalsレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDocker & DevOps Fundamentals学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Docker & DevOps Fundamentalsコースには全4レッスンが含まれています。
コンテナは一時的な存在
コンテナは一時的な存在です。書き込んだデータはコンテナ内に保存され、コンテナを削除するとデータも消去されます。ステートレスなアプリケーションには問題ありませんが、データベースではデータを保持する必要があります。
書き込み可能レイヤー
各コンテナには、イメージの上に薄い書き込み可能レイヤーがあります。書き込みはそこに保存されますが、このレイヤーはコンテナのライフサイクルに紐づいているため、コンテナを削除すると消滅します。
データを永続化する2つの方法
Dockerでデータを永続化する方法は2つあります。Dockerが管理するボリュームと、ホストのフォルダーを割り当てるバインドマウントです。デフォルトではボリュームが推奨されます。
ボリュームの作成
docker volume createを使うと、名前付きボリュームを1つのコマンドで作成できます。物理的な保存場所はDockerが決めるため、自分で指定する必要はありません。
docker volume create app-dataボリュームのマウント
-vを使い、volumeName:/path/in/containerという形式でボリュームをアタッチします。これで、そのパスに書き込まれたすべてのデータがボリュームに永続化されます。
docker run -d -v app-data:/var/lib/data myimage削除してもデータは残る
ボリュームはコンテナから独立しているため、コンテナを削除しても、同じボリュームを使って新しいコンテナを起動すれば、データはそのまま残ります。
docker rm -f mycontainer
docker run -d -v app-data:/var/lib/data myimageローカル開発でのバインドマウント
バインドマウントを使うと、ホストのディレクトリをコンテナ内に割り当てられます。開発時には特に便利で、マシン上で編集したコードがコンテナ内にすぐ反映されます。
docker run -v /Users/me/project:/app node:20ボリュームとバインドマウントの比較
用途に応じて選択します。移植しやすくDockerが管理する本番データにはボリュームを、正確なホストパスと完全な制御が必要な開発環境にはバインドマウントを使います。
ボリュームの確認
docker volume lsでボリュームの一覧を表示し、docker volume inspectで、実際にディスクのどこにデータが保存されているかを含む詳細を確認できます。
docker volume ls
docker volume inspect app-dataコンテナ間でのデータ共有
1つのボリュームを複数のコンテナにマウントすると、コンテナ間でファイルを共有できます。たとえば、アプリコンテナとバックアップコンテナが同じデータを読み取れます。
docker run -v shared:/data writer
docker run -v shared:/data readerクリーンアップ
使っていないボリュームはディスク容量を消費します。docker volume rmで個別に削除するか、docker volume pruneで未使用のボリュームをまとめて削除できます。ただし、データが完全に消去されるため注意してください。
docker volume rm app-data
docker volume prune理解度チェック
Dockerのデータについて理解できたか確認しましょう。
まとめ
データを永続化する方法を学びました。コンテナは一時的な存在ですが、ボリュームはコンテナを削除しても残り、-v name:/pathでマウントできます。一方、バインドマウントは開発に適しています。
よくある質問
「Docker Volumeによるデータ管理」レッスンは無料ですか?
はい。「Docker Volumeによるデータ管理」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Docker & DevOps Fundamentalsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Docker & DevOps Fundamentalsコースには全4レッスンが含まれています。
「Docker Volumeによるデータ管理」で何を学びますか?
コンテナを削除するとデータが失われる理由を理解し、Docker volumeとバインドマウントを使ってデータを永続化・共有する方法を学びます。 ブラウザで直接実行するハンズオンコードでDocker & DevOps Fundamentalsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Docker & DevOps Fundamentalsを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDocker & DevOps Fundamentalsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「Docker Volumeによるデータ管理」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDocker & DevOps Fundamentalsレッスンでコードを書いて実行できますか?
はい。すべてのDocker & DevOps Fundamentalsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- コンテナとは
- Docker Desktopのインストール
- 最初のDockerコンテナ
- Docker Volumeによるデータ管理