はじめに
Dockerを使ってコンテナを動かすとき、重要な概念の一つが「ネットワーク」です。
その中でも最も基本的でよく使われるのが bridgeネットワーク です。
本記事では、bridgeネットワークの仕組み・用途・作り方をわかりやすく解説し、実際に自分で触って理解できるハンズオンを行います。
bridgeネットワークとは?
bridge(ブリッジ)ネットワークは、Dockerのデフォルトネットワークタイプの一つで、同一ホスト上のコンテナ同士を接続する仮想ネットワークです。
Dockerをインストールすると、自動的にbridge
という名前のネットワークが作成されます:
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
abcd1234efgh bridge bridge local
このネットワークはホスト内部で仮想スイッチのように動作し、同一ネットワーク内のコンテナ間通信を可能にします。
bridgeネットワークの特徴
- 同一ホスト内の通信専用(他ホストのコンテナとは通信できない)
- 名前解決(コンテナ名で通信可能)
同じネットワークに属するコンテナ同士は、IPではなくコンテナ名で通信できます。 - 独立した仮想ネットワークを構築可能
独自にbridgeネットワークを作成すれば、異なるアプリケーションをネットワーク的に分離できます。
ハンズオン:bridgeネットワークを実際に作って使う
ここからは、実際に手を動かしてbridgeネットワークを体験してみましょう。
ステップ1:独自のbridgeネットワークを作成
まず、mybridge
というカスタムネットワークを作成します。
$ docker network create mybridge
確認してみましょう:
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
abcd1234efgh bridge bridge local
efgh5678ijkl mybridge bridge local
これで、デフォルトとは別のbridgeネットワークができました。
ステップ2:ネットワークに属するコンテナを起動
mybridge
ネットワークに属するコンテナを2つ作ります。
# 1台目コンテナ
$ docker run -dit --name app1 --network mybridge alpine sh
# 2台目コンテナ
$ docker run -dit --name app2 --network mybridge alpine sh
コンテナが起動したら、app1
コンテナに入ります。
$ docker exec -it app1 sh
中でping
コマンドを使って通信してみましょう。
/ # ping -c 3 app2
PING app2 (172.18.0.3): 56 data bytes
64 bytes from 172.18.0.3: seq=0 ttl=64 time=0.091 ms
64 bytes from 172.18.0.3: seq=1 ttl=64 time=0.064 ms
64 bytes from 172.18.0.3: seq=2 ttl=64 time=0.075 ms
同じネットワーク内にいるため、コンテナ名で通信できています。
ステップ3:ネットワークの詳細を確認
作成したネットワークの設定を見てみましょう。
$ docker network inspect mybridge
出力の中には、以下のような情報が含まれています:
- Subnet(サブネット)
- Gateway
- 接続中のコンテナ情報
- ドライバ(bridge)
これにより、Dockerが内部的にどのように仮想ネットワークを構築しているかがわかります。
ステップ4:ネットワークを削除
使用が終わったらネットワークを削除してクリーンアップします。
$ docker network rm mybridge
まとめ
- bridgeネットワークはDockerのデフォルトネットワークタイプ
- 同一ホスト上のコンテナ間通信に最適
- 独自のbridgeネットワークを作ることで名前解決や分離環境の構築が可能
docker network create / inspect / rm
でネットワーク管理を理解できる
次のステップ
- Docker Composeで
networks
セクションを定義し、複数コンテナを同一bridgeネットワークで接続する overlay
ネットワークでマルチホスト通信に挑戦macvlan
を使って物理ネットワークと統合
コメントを残す