Docker-Composeは複数のコンテナを簡単に管理・構成できるツールです。ここでは、docker-compose.ymlを使ったネットワーク設定とポートマッピングの方法を具体例と簡単な例えを交えて解説します。
Docker-Composeでは、以下のディレクティブを使ってネットワークやポートの設定を行います。
portsディレクティブの使い方portsは、ホストとコンテナのポートをマッピングするために使用します。これは、Dockerの-p <ホストポート>:<コンテナポート>オプションに相当します。
構文:
ports:
- "<ホストポート>:<コンテナポート>"
例え:
portsは「建物(ホスト)の玄関番号(ポート)」を指定して、コンテナ(部屋)内のサービスにアクセスする道を作る仕組みです。
networksセクションの基本networksセクションを使うと、カスタムネットワークを定義して、コンテナ間の通信を分離または整理できます。
構文:
networks:
<ネットワーク名>:
driver: <ネットワークドライバ>
よく使うドライバ:
bridge: デフォルトで使用される仮想スイッチ。overlay: 複数ホスト間で通信可能(Swarmで利用)。例え:
networksは「特定の部屋(コンテナ)同士だけで通信する専用の廊下」を作るようなイメージです。
以下は、Nginxを使ったサンプルのdocker-compose.ymlファイルです。この設定では、ホストの8080ポートをコンテナの80ポートにマッピングし、カスタムネットワークを構築します。