aws

【A-27】Docker network

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