環境構築の準備
Dockerのインストール
Dockerの公式サイトからインストール手順に従ってDockerをインストールします。
デモ用イメージの取得
Docker HubからUbuntu公式イメージをダウンロードします:
docker pull ubuntu
複数のホストを使用する場合、各ホストでイメージを取得するか、docker save/loadコマンドでイメージを転送します。
1. ルーティング方式によるマルチホストDockerコンテナ通信
ホスト構成とIP情報
| ホスト名 | IPアドレス | コンテナネットワーク |
|---|---|---|
| docker-node-01 | 192.168.61.132 | 172.16.200.0/24 |
| docker-node-02 | 192.168.61.135 | 172.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-01 | 192.168.3.100 | 192.168.3.50/24 |
| docker-node-02 | 192.168.3.200 | 192.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
これにより、異なるホスト上のコンテナ間で直接通信が可能になります。