5.1 バインドマウントディレクトリのアイデア (bind mounts)
バインドマウント (bind mounts) を使ってホストのディレクトリをコンテナにマウントするのは、Dockerの強力な機能だよ。これでホストシステム上のファイルやディレクトリを直接コンテナで利用できるようになるんだ。特に開発、テスト、設定時には、ローカルファイルをコンテナにコピーしなくても使えるから超便利。この講義では、バインドマウントの使い方、具体例、そしてベストプラクティスを解説していくね。
バインドマウントでは、ホストシステムから特定のディレクトリやファイルをコンテナにマウントできるんだ。これはDockerによって管理され、特別なディレクトリに保存されるボリューム (volumes) とは違う。
バインドマウントのメリット
- ホストファイルへの直接アクセス: コンテナはホストのファイルを直接利用したり、編集したりできるよ。
- 開発の便利さ: 開発者がホスト上のファイルを変更すると、その変更がリアルタイムでコンテナに反映されるんだ。
- 柔軟性: ホスト上のどのディレクトリでもコンテナにマウント可能なんだよ。
バインドマウントのコマンド
バインドマウントは、コンテナを起動するときに-v
または --mount
パラメータを使用してマウントするんだ。
5.2 パラメーター-v
の使用例
1. ホストディレクトリをコンテナにマウントする
ホストディレクトリをコンテナにマウントする基本的な例:
docker run -d --name my_container -v /path/on/host:/path/in/container nginx
この例では、ホスト上のディレクトリ/path/on/host
がnginxコンテナ内のディレクトリ/path/in/container
にマウントされます。
2. ホストファイルをコンテナにマウントする
個別のファイルをマウントすることもできます:
docker run -d --name my_container -v /path/on/host/config.conf:/etc/nginx/nginx.conf nginx
この例では、ホスト上の設定ファイルconfig.conf
がコンテナ内の設定ファイルnginx.conf
としてマウントされます。
5.3 --mount
パラメータの使用例
--mount
パラメータは、さまざまなパラメータを指定して詳細にバインドディレクトリをマウントする方法を提供します。
1. --mount
を使ったディレクトリのマウント
docker run -d --name my_container --mount type=bind,source=/path/on/host,target=/path/in/container nginx
この例は-v
を使った前の例と類似していますが、より詳細な構文を使用します。
2. 読み取り専用モードでのマウント
docker run -d --name my_container --mount
type=bind,source=/path/on/host,target=/path/in/container,readonly nginx
この例では、ディレクトリは読み取り専用モードでマウントされ、コンテナ内のファイルの変更が防止されます。
5.4 実用的な例
ウェブアプリを開発する際、ホスト上のソースコードディレクトリをコンテナにマウントすることができます。
ホスト上でソースコードのディレクトリを作成する:
mkdir -p ~/my_web_app
echo "こんにちは、世界!" > ~/my_web_app/index.html
ディレクトリをマウントしてコンテナを起動する:
docker run -d --name web_dev -v ~/my_web_app:/usr/share/nginx/html nginx
これで、ホスト上の ~/my_web_app ディレクトリに行われた変更は、即座にコンテナにも反映されます。
例 2: 設定ファイルの使用
ホスト上のディレクトリからコンテナに設定ファイルをマウントすることができます。
ホスト上で設定ファイルを作成する:
echo "user www-data;" > ~/nginx.conf
echo "worker_processes auto;" >> ~/nginx.conf
設定ファイルをマウントしてコンテナを起動する:
docker run -d --name nginx_custom -v ~/nginx.conf:/etc/nginx/nginx.conf nginx
この例では、ホスト上の Nginx 設定ファイルがコンテナ内で使用されています。
5.5 マウントされたディレクトリとファイルの確認
コンテナ内でコマンドを実行するために docker exec コマンドを使用して、マウントされたディレクトリやファイルの内容を確認できるよ。
例
ディレクトリの内容を確認する方法:
docker exec -it my_container ls /path/in/container
ファイルの内容を確認する方法:
docker exec -it my_container cat /path/in/container/config.conf
バインドされたディレクトリの削除
バインドされたディレクトリは Docker によって直接管理されていないから、削除はホストのファイルシステムレベルでする必要があるんだ。
例
ホストでバインドされたディレクトリを削除する方法:
rm -r /path/on/host
GO TO FULL VERSION