Weaveでコンテナ間通信を試してみる
とりあえず2台の仮想マシンを用意します。下記のようなVagrantfileでサクッと実行環境を構築。
# -*- mode: ruby -*- # -*- encoding: utf-8 -*- # vi: set ft=ruby : Vagrant.configure("2") do |config| config.vm.box = "centos/7" config.vm.define :co1 do | co1 | co1.vm.hostname = "co1" co1.vm.network :private_network, ip:"192.168.33.11" end config.vm.define :co2 do | co2 | co2.vm.hostname = "co2" co2.vm.network :private_network, ip:"192.168.33.12" end end
サーバをco1とco2の2台構成にしてプライベートネットワークでノード間を通信できるようにしておきます。
vagrant upでOSが起動したらそれぞれにSSHで接続してdocker-ceをインストールします。
docker-ceインストール後、両サーバで下記コマンドを実行しCentOS7のコンテナイメージを取得してください。
docker pull centos:centos7
weaveのインストール。
dockerのインストールが完了したら下記コマンドでweaveをインストールします。ホストco1とco2それぞれで実施してください。
su -
curl -L git.io/weave -o /usr/local/bin/weave
sudo chmod a+x /usr/local/bin/weave
exit
weaveの起動
まずco1でweaveを起動します。
vagrant ssh co1
weave launch
docker ps -a
docker ps -aコマンドでweaveのプロセスが確認できれば次にco2でも起動します。
vagrant ssh co2
weave launch 192.168.33.11
docker ps -a
co2ではco1のIPアドレスを設定して起動します。co2でもdocker ps -aでweaveプロセスの起動が確認できればOK。
dockerコンテナ起動
co1、co2それぞれでdockerコンテナを起動します。centos7のイメージを利用しますが、展開した直後だとipコマンドが使えないのでiprouteパッケージをインストールします。
ethwe0@if18の10.32.0.1がホストco1のIPアドレスです。
vagrant ssh co1
docker run --net=weave -it -d --name c7d1 centos:centos7
docker exec -it c7d1 /bin/bash
yum -y install iproute
ip a
1: lo:mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
...
inet 127.0.0.1/8 scope host lo
...
17: ethwe0@if18:mtu 1376 qdisc noqueue state UP group default
...
inet 10.32.0.1/12 brd 10.47.255.255 scope global ethwe0
...
20: eth0@if21:mtu 1500 qdisc noqueue state UP group default
...
inet 172.18.0.2/16 brd 172.18.255.255 scope global eth0
...
co2も同様に作業します。
co2のIPアドレスは10.44.0.0のようです。
vagrant ssh co2
docker run --net=weave -it -d --name c7d2 centos:centos7
docker exec -it c7d2 /bin/bash
yum -y install iproute
ip a
1: lo:mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
...
inet 127.0.0.1/8 scope host lo
...
16: ethwe0@if17:mtu 1376 qdisc noqueue state UP group default
...
inet 10.44.0.0/12 brd 10.47.255.255 scope global ethwe0
...
19: eth0@if20:mtu 1500 qdisc noqueue state UP group default
...
inet 172.18.0.2/16 brd 172.18.255.255 scope global eth0
...