Docker では、コンテナ同士が通信できるようにするためのネットワーク機能 を提供しています。
ここでは、docker networkについて学習しましょう。
[ 学習フェーズ ]
1. Docker のネットワーク種類
Docker には、以下の5種類のネットワークモードがあります。
ネットワーク名 | 特徴 |
---|---|
bridge(ブリッジ) | デフォルトのネットワーク。異なるコンテナ間で通信可能。 |
host(ホスト) | ホストのネットワークを直接使用(コンテナ同士の分離なし)。 |
none(なし) | ネットワークなし。完全に独立したコンテナ。 |
overlay(オーバーレイ) | 複数のホスト間でコンテナを接続(Swarm環境向け)。 |
macvlan(MACアドレス割り当て) | 物理ネットワークに直接接続(特殊用途)。 |
ちなみに、【A-26】Docker volume でコンテナ間でストレージを共有できていたのは、デフォルトのbridgeネットワークが機能していたためです。
ネットワークを確認するには以下のコマンドを利用します。
確認コマンド
docker network ls
出力例:
NETWORK ID NAME DRIVER
xxxxxxxxxxxx bridge bridge
xxxxxxxxxxxx host host
xxxxxxxxxxxx none null
[ 実践フェーズ ]
ハンズオン:ブリッジネットワークで PHP と MySQL を通信させる
以下の手順で、PHP(Webアプリ)と MySQL(データベース)が通信できる環境を構築 してみましょう。
1. ブリッジネットワークを作成
まず、独自のブリッジネットワーク(my-bridge
) を作成します。
docker network create my-bridge
作成されたネットワークを確認:
docker network ls
2. MySQL コンテナを起動
MySQL を my-bridge
ネットワーク上に作成し、mysql-container
という名前を付けます。
3. PHP コンテナを起動
PHP コンテナを作成し、mysql-clientをインストールしましょう。
その後、コンテナ内でMySQLコンテナに接続できるかテストしてください。
※今まで学習した知識を応用して頑張ってみましょう。
4. 片付け
docker stop mysql-container
docker rm mysql-container
docker network rm my-bridge