Dockerを使ったマルチホストのネットワーク通信(docker network)

ホストCとホストDにdockerceをインストールしてdocker networkでマルチポストネットワークを構成する。

Docker ホストのメタ情報を格納する格納するために、key-value データストアのconsul を準備する
このkey-value データストアにはディスカバリ情報、エンドポイント、IP アドレスなどの情報が格納され、クラスタに参加しているDocker ホストが同じクラスタ内の他Docker ホストを検索するのに利用される
Docker ではConsul, Etcd, ZooKeeper といったkey-value データストアをサポートしていますが、今回はConsul を使用する

機能 TCP/UDPポート 説明
ServerRPC TCP(8300) Server が他の Agent からRPCのリクエストを受け付ける
SerfLAN TCP&UDP(8301) LAN用のゴシッププロトコル全 Agent 同士が使う
SerfWAN TCP&UDP(8302) WAN用のゴシッププロトコルServer 同士が使う
CLIRPC TCP(8400) consulコマンド実行時にローカルの Agent との通信に使われる
HTTP API TCP(8500) Client が HTTP リクエストを受け付ける
DNS TCP&UDP(8600) Agent が DNSクエリを受け付ける

ホストCとホストDの情報は以下の通り。

ホストCとホストDでconsulをインストールする。

ホストCでconsulサーバを起動する。

ホストDでconsulエージェントを起動、consulサーバへ接続するため「-join」はホストCのIPアドレスを指定する

ホストCとDでdocker-ceをインストール
こちらの手順を参考に。
http://www.suzuki1999.com/?p=84

/etc/default/dockerに以下の行を追加。

/lib/systemd/system/docker.serviceにを以下環境定義ファイルを指定して起動する。

すると以下の様なエラーが出力され起動できない。

いろいろ調べたら以下サイトに行き着いた。以下のサイトに従って設定を変更する。
https://forums.docker.com/t/expose-the-docker-remote-api-on-centos-7/26022/2

ホストCのunit定義ファイルを修正する。「–cluster-advertise」には自ホストのIPアドレスを指定する。

ホストDのunit定義ファイルを修正する。「–cluster-advertise」には自ホストのIPアドレスを指定する。

オーバレイネットワークを作成する
現状ではオーバレイネットワークは作成されていない。現状のDockerネットワークは以下の通り。

ホストCでオーバーレイ・ネットワークを作成する。名前はmynet01を指定する。

ホストCでtest01コンテナをmynet01を指定して起動する

ホストCでtest02コンテナをmynet01を指定して起動する

test01コンテナからtest02コンテナへping疎通が可能なことを確認する

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です