CodeGym /コース /Docker SELF /ボリュームのマウント

ボリュームのマウント

Docker SELF
レベル 12 , レッスン 2
使用可能

8.1 仮想ディスクとの出会い

ボリューム (Volumes) のマウントは、Docker の一番便利な機能の一つだよ。これを使えば、コンテナがホストマシンのデータとうまくやり取りできるようになるんだ。この機能はデータ管理を柔軟かつ便利にするのさ:データを長期間保存したり、複数のコンテナ間でシェアしたり、問題が起きた時にデータをバックアップまたは復元するのも簡単になるよ。

Docker のボリューム (Volumes) は、データをコンテナから独立して保存する手段だよ。コンテナが削除されても、ボリュームに保存されたデータは安全に保たれる。ボリュームはコンテナに接続 (マウント) できるから、データを別々に保存して何度でも使い回せるんだ。コンテナをいくら作り直して削除してもね。

主なボリュームの種類

  1. 匿名ボリューム (Anonymous Volumes)
    • コンテナにボリュームを明示的に指定しない場合、Docker が自動的に作成する。
    • 一時的なデータ保存に使われる。
  2. 名前付きボリューム (Named Volumes)
    • Docker によって作成および管理される。
    • いくつかのコンテナに接続でき、削除や停止後も保持される。
  3. バインドマウント (Bind Mounts)
    • ホストマシンのディレクトリとコンテナ内のディレクトリをリンクさせる。
    • ホストシステムのデータにアクセスするのに便利で、開発時にかなり役立つ。

docker run コマンドを使ったボリュームのマウントの基本構文


-v <host_path>:<container_path>

完全な構文:


docker run -v <host_path>:<container_path> [OPTIONS] IMAGE [COMMAND] [ARG...]

ボリュームをマウントするための主なパラメータ

1. パラメータ -v または --volume

名前付きボリュームまたはバインドマウントを作成するために使用される。

例:

ターミナル

docker run -d -v /host/data:/container/data nginx

2. パラメータ --mount

もっと柔軟で詳細なボリュームのマウント方法を提供し、追加パラメータもサポートする。

例:

ターミナル

docker run -d --mount type=bind,source=/host/data,target=/container/data nginx

8.2 ボリュームの作成と使用

1. 名前付きボリューム

名前付きボリュームはDockerによって作成および管理されるよ。これらは、コンテナを再起動したり削除した後でもデータを保持する必要がある場合にデータを永続的に保存するために使用されるんだ。

名前付きボリュームの作成:

ターミナル

docker volume create my_volume

ボリュームをマウントしてコンテナを起動:

次の例では、ボリュームmy_volumeがコンテナ内部のディレクトリ/dataにマウントされるよ。/dataに書き込まれたすべてのデータはボリューム内に保存されて、コンテナを削除した後でも利用可能なんだ。

ターミナル

docker run -d -v my_volume:/data --name my_container nginx

2. 匿名ボリューム

匿名ボリュームはDockerによって自動的に作成されて、特定のコンテナに関連付けられるんだ。これらは、コンテナが削除された後に保持する必要のない一時データに便利だよ。

匿名ボリュームでコンテナを起動:

この例では、Dockerが匿名のボリュームを自動的に作成して、コンテナ内部のディレクトリ/dataにマウントするよ。

ターミナル

docker run -d -v /data --name my_container nginx

3. バインドディレクトリ

バインドディレクトリを使うと、ホストシステムのディレクトリをコンテナにマウントできるんだ。この方法は、コンテナとホストシステム間でデータを共有するのに便利だよ。また、開発プロセス中にホストシステムにソースコードを保存する場合にもよく使われるね。

バインドディレクトリを使ってコンテナを起動:

次の例では、ホストマシンのディレクトリ/host/dataがコンテナ内部のディレクトリ/container/dataにマウントされるんだ。

ターミナル

docker run -d -v /host/data:/container/data --name my_container nginx

8.3 ボリュームの使用例

1. データベースのデータの保存

データベースでボリュームを使うと、コンテナを再起動したりアップデートしたりしてもデータを保持することができるよ。これは特に本番環境での信頼性のために重要なんだ。

例:

この例では、PostgreSQLのデータがボリュームdb_dataに保存されることで、再起動やコンテナ削除の際にもデータが保護されます。

ターミナル

docker volume create db_data
docker run -d -v db_data:/var/lib/postgresql/data --name postgres_container postgres

2. コンテナ間でのデータ共有

時々、複数のコンテナでデータをシェアしたい場合もあるよね。ボリュームを使うと、このプロセスがとても簡単になるんだ。

例:

ボリュームを作成して、それを使う2つのコンテナを起動します。両方のコンテナがshared_data内のデータにアクセスできるんだ。こうすることでデータを簡単にシェアできるよ。

ターミナル

docker volume create shared_data
docker run -d -v shared_data:/data --name container1 nginx
docker run -d -v shared_data:/data --name container2 nginx

3. 開発とテスト

アプリケーションを開発するとき、ホストのマシンとコンテナの間でソースコードを共有できるディレクトリを使うと便利だね。これで開発者はホスト上でコードを編集して、コンテナが即座にその更新内容を使うことができるよ。

例:

この例では、ホストマシンのディレクトリ/path/to/sourceをコンテナの/appディレクトリにマウントしているよ。これでコンテナはホストシステムの最新のソースコードを使うことができるんだ。

ターミナル

docker run -d -v /path/to/source:/app --name dev_container node
<

8.4 ボリュームの管理

Dockerにはボリュームを管理するための便利なコマンドがあって、それを使えばボリュームの作成、削除、情報の確認が簡単にできるよ!

1. すべてのボリュームの表示

このコマンドは、ホストマシン上で利用可能なすべてのボリュームのリストを表示するよ。

Terminal

docker volume ls

2. ボリュームの情報を表示

このコマンドを使うと、ボリュームmy_volumeの詳細情報を確認できるよ。ホストファイルシステム上の場所や、このボリュームを使っているコンテナの情報などがわかるんだ。

Terminal

docker volume inspect my_volume

3. ボリュームを削除

このコマンドはボリュームmy_volumeを削除するよ。でも削除する前に、このボリュームを使っているコンテナがないことを確認してね。使われている場合、コマンドは実行されないから注意だよ。

Terminal

docker volume rm my_volume

8.5 ボリュームのバックアップ

データの安全性を確保するためには、ボリュームのバックアップを作成し、必要に応じて復元できることが重要だよ。

1. ボリュームのバックアップ

この例では、ボリュームmy_volumeの内容をmy_volume_backup.tar.gzファイルにアーカイブし、それをホストマシンの/backupディレクトリに保存するよ。

Terminal

docker run --rm -v my_volume:/volume -v /backup:/backup busybox tar czf /backup/my_volume_backup.tar.gz /volume

2. ボリュームの復元

この例では、my_volume_backup.tar.gzファイルに保存されているバックアップからボリュームmy_volumeの内容を復元するよ。

Terminal

docker run --rm -v my_volume:/volume -v /backup:/backup busybox tar xzf /backup/my_volume_backup.tar.gz -C /volume
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION