Dockerコンテナのマルチホスト通信実装ガイド

環境構築の準備

Dockerのインストール

Dockerの公式サイトからインストール手順に従ってDockerをインストールします。

デモ用イメージの取得

Docker HubからUbuntu公式イメージをダウンロードします:

docker pull ubuntu

複数のホストを使用する場合、各ホストでイメージを取得するか、docker save/loadコマンドでイメージを転送します。

1. ルーティング方式によるマルチホストDockerコンテナ通信

ホスト構成とIP情報

ホスト名IPアドレスコンテナネットワーク
docker-node-01192.168.61.132172.16.200.0/24
docker-node-02192.168.61.135172.16.201.0/24

Dockerネットワーク設定の調整

デフォルトのdocker0ブリッジアドレスを変更するため、/etc/docker/daemon.jsonを設定:

{
  "bip": "172.16.200.1/24"
}

設定後、Dockerサービスを再起動:

systemctl restart docker

Dockerコンテナの作成

docker-node-01でコンテナを作成:

docker run --name node01-container -it ubuntu /bin/bash
apt update && apt install -y net-tools
ifconfig eth0

同様にdocker-node-02でもコンテナを作成します。

相互ルーティングの設定

IP転送を有効にした後、相互ルートを追加:

# docker-node-01で実行
ip route add 172.16.201.0/24 via 192.168.61.135

# docker-node-02で実行  
ip route add 172.16.200.0/24 via 192.168.61.132

これで異なるホスト上のコンテナ間で通信が可能になります。

2. ブリッジ接続方式によるマルチホスト通信

ホスト構成情報

ホスト名IPアドレスコンテナIP
docker-node-01192.168.3.100192.168.3.50/24
docker-node-02192.168.3.200192.168.3.150/24

Dockerブリッジ設定の変更

/etc/docker/daemon.jsonを設定:

{
  "bip": "192.168.3.100/24",
  "fixed-cidr": "192.168.3.50/24",
  "default-gateway": "192.168.3.1"
}

物理インターフェースをdocker0ブリッジに追加:

brctl addif docker0 ens33 && ifconfig ens33 0.0.0.0

コンテナの作成とIP管理

各ホストでコンテナを作成し、IPアドレスの重複を避けるように管理:

# docker-node-01
docker run -it --name container01 ubuntu /bin/bash

# docker-node-02  
docker run -it --name container02 ubuntu /bin/bash
docker run -it --name container03 ubuntu /bin/bash
docker stop container02 && docker rm container02

これにより、異なるホスト上のコンテナ間で直接通信が可能になります。

タグ: Docker ネットワーク コンテナ通信 ルーティング ブリッジ

7月5日 00:15 投稿