Dockerは仮想化技術なので、ハードウェアの台数によらず仮想環境(コンテナ)を立ち上げられます。その中ではコンテナの垣根を越えて連携させたいと思うことも多いでしょう。そのための仕組みとしてリンクがありますが、より大規模なネットワークを構築する場合はWeaveを使うのが良さそうです。

Weaveの使い方

WeaveはDockerコンテナで仮想的なネットワークを構築するソフトウェアになります。まずはUbuntuなりでダウンロードします。

$ sudo wget -O /usr/local/bin/weave \
  https://raw.githubusercontent.com/zettio/weave/master/weaver/weave
$ sudo chmod a+x /usr/local/bin/weave

インストールはこれで完了です。次に1台目のサーバでWeaveを立ち上げます。

weave launch 10.0.0.1/16

次に適当なDockerコンテナを立ち上げます。その際にはIPアドレスも指定します。

$ C=$(weave run 10.0.1.1/24 -t -i ubuntu)

別なサーバからは1台目のサーバのIPアドレスを指定してWeaveを立ち上げます。

$ weave launch 10.0.0.2/16 $HOST1

これで1台目と2台目で立ち上げたコンテナ間でpingが通るようになります。

$ docker attach $C
root@28841bd02eff:/# ping -c 1 -q 10.0.1.2
PING 10.0.1.2 (10.0.1.2): 48 data bytes
--- 10.0.1.2 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max/stddev = 1.048/1.048/1.048/0.000 ms

同じようにIPアドレスの切り方を変えてみます。

$ D=$(weave run 10.0.2.1/24 -t -i ubuntu)

例えばこんな感じにすると、10.0.1.2などにはpingが通らなくなります。仮想的な内部ネットワークが構築できるので、より規模の大きいDockerネットワークが手軽に構築できるという訳です。

WeaveはGo製、Apache License 2.0のオープンソース・ソフトウェアです。

より詳しいレビューを複数のDockerサーバで独自ネットワークを構築する「Weave」を試す! - さくらのナレッジにて掲載中です。ぜひご覧ください!

zettio/weave