はじめに
-
VMバリにdockerを使いたいので、ネットワークを自由に構成する方法を調べてみた。
-
利用した環境は下記の通り
$ docker version
Client:
Version: 1.9.0
API version: 1.21
Go version: go1.4.3
Git commit: 76d6bc9
Built: Tue Nov 3 19:20:09 UTC 2015
OS/Arch: darwin/amd64
Server:
Version: 1.9.0
API version: 1.21
Go version: go1.4.3
Git commit: 76d6bc9
Built: Tue Nov 3 19:20:09 UTC 2015
OS/Arch: linux/amd64
docker network
- なんか1年位前はpipeworkとかを使った記憶があったけど、標準で行けそうなコマンドを発見。前あったかどうかは不明。
$ docker network --help
Usage: docker network [OPTIONS] COMMAND [OPTIONS]
Commands:
ls List all networks
rm Remove a network
create Create a network
connect Connect container to a network
disconnect Disconnect container from a network
inspect Display detailed network information
Run 'docker network COMMAND --help' for more information on a command.
--help=false Print usage
ネットワーク一覧
- 兎にも角にも一覧を見てみる。標準だとこんな感じのご様子。
$ docker network ls
NETWORK ID NAME DRIVER
3ded1f7d73bf bridge bridge
e98e51648711 none null
a4cd229ed4eb host host
- bridgeから詳しく見てみる。ちなみに現段階で2台位コンテナが上がってる。
$ docker network inspect bridge
[
{
"Name": "bridge",
"Id": "3ded1f7d73bf634cf1802903182ca35b2e5dbb3be7fc06cfb6ca706e2905e5ce",
"Scope": "local",
"Driver": "bridge",
"IPAM": {
"Driver": "default",
"Config": [
{
"Subnet": "172.17.0.1/16",
"Gateway": "172.17.0.1"
}
]
},
"Containers": {
"7503c9bd3f7b3c1e694c89b6a5d0950c5b479c4a5b7e7d5a56f2bdc6769dab3d": {
"EndpointID": "3e4080dacbef993e4d9583edf1d336a29cb7c25c050fd34c67a10a63b0e554d3",
"MacAddress": "02:42:ac:11:00:03",
"IPv4Address": "172.17.0.3/16",
"IPv6Address": ""
},
"eaed0415fcd6c368d39591586508dc4348ae80ad65fedd49c4fc7dc1cda39912": {
"EndpointID": "b55b1939903d6451927529963e78b226d598aa80d0f64c4f4346f81b4abe9e68",
"MacAddress": "02:42:ac:11:00:02",
"IPv4Address": "172.17.0.2/16",
"IPv6Address": ""
}
},
"Options": {
"com.docker.network.bridge.default_bridge": "true",
"com.docker.network.bridge.enable_icc": "true",
"com.docker.network.bridge.enable_ip_masquerade": "true",
"com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
"com.docker.network.bridge.name": "docker0",
"com.docker.network.driver.mtu": "1500"
}
}
]
- デフォルトで立ち上げたコンテナ2台はこのネットワークに属している様子。
- bridgeという種類だけあって、ホストOSとの通信も可能だった。
- なんとなく一通りのことは設定できそう。
- scopeパラメータが気になる。L2 over L3ができそう。後述する。
ネットワークの作成
- とりあえず1つ新しいネットワークを作成してみる。
$ docker network create -d bridge isolated_nw
f13de5c6af5e5069511dedc763411c574d911ba5f8cfbf43e7d3bb6e9c84366b
$
$
$ docker network inspect isolated_nw
[
{
"Name": "isolated_nw",
"Id": "f13de5c6af5e5069511dedc763411c574d911ba5f8cfbf43e7d3bb6e9c84366b",
"Scope": "local",
"Driver": "bridge",
"IPAM": {
"Driver": "default",
"Config": [
{}
]
},
"Containers": {},
"Options": {}
}
- optionは下記の様に指定できる。
$ docker network create -d bridge --gateway=192.168.100.254 --subnet=192.168.100.0/24 --ip-range=192.168.100.48/28 isolated_nw2
551e659db3c66a69b6dffcf642a097a36211fb9cf5b846969c970782be2f6c06
- --gateway ゲートウェイを指定する
- --subnet ネットワークのサブネットを指定する。CIDR表記で渡す。
- --ip-range コンテナに割り当てるIPアドレス帯をCIDR表記で渡す。
$ docker network inspect isolated_nw2[
{
"Name": "isolated_nw2",
"Id": "551e659db3c66a69b6dffcf642a097a36211fb9cf5b846969c970782be2f6c06",
"Scope": "local",
"Driver": "bridge",
"IPAM": {
"Driver": "default",
"Config": [
{
"Subnet": "192.168.100.0/24",
"IPRange": "192.168.100.48/28",
"Gateway": "192.168.100.254"
}
]
},
"Containers": {},
"Options": {}
}
]
- いまのところ
- isolated_nw サブネットなどIPは定義されていない
- isolated_nw2 サブネットまで自前で定義
- の2つのネットワークがある状態となる。
ネットワークへの接続
- コンテナ一覧
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7503c9bd3f7b centos:7 "bash" 54 minutes ago Up 54 minutes grave_bhaskara
eaed0415fcd6 centos:7 "bash" 35 hours ago Up 35 hours agitated_mcclintock
- 1つ目の「grave_bhaskara」にisolated_nwをネットワークをくっつけてみる
$ docker network connect isolated_nw grave_bhaskara
$ docker network inspect isolated_nw
[
{
"Name": "isolated_nw",
"Id": "f13de5c6af5e5069511dedc763411c574d911ba5f8cfbf43e7d3bb6e9c84366b",
"Scope": "local",
"Driver": "bridge",
"IPAM": {
"Driver": "default",
"Config": [
{}
]
},
"Containers": {
"7503c9bd3f7b3c1e694c89b6a5d0950c5b479c4a5b7e7d5a56f2bdc6769dab3d": {
"EndpointID": "f64bb44990dfed24bebc0fbca91cd3aedbb97435e233aeeaf91d3c7758071e64",
"MacAddress": "02:42:ac:12:00:02",
"IPv4Address": "172.18.0.2/16",
"IPv6Address": ""
}
},
"Options": {}
}
]
- さらにisolated_nw2を接続する。
$ docker network connect isolated_nw2 grave_bhaskara
$ docker network inspect isolated_nw2
[
{
"Name": "isolated_nw2",
"Id": "551e659db3c66a69b6dffcf642a097a36211fb9cf5b846969c970782be2f6c06",
"Scope": "local",
"Driver": "bridge",
"IPAM": {
"Driver": "default",
"Config": [
{
"Subnet": "192.168.100.0/24",
"IPRange": "192.168.100.48/28",
"Gateway": "192.168.100.254"
}
]
},
"Containers": {
"7503c9bd3f7b3c1e694c89b6a5d0950c5b479c4a5b7e7d5a56f2bdc6769dab3d": {
"EndpointID": "e046f206f19cf1cd37ea23ad654243c0879b5cffb1352ce517b04ec0162701ae",
"MacAddress": "02:42:c0:a8:64:31",
"IPv4Address": "192.168.100.49/24",
"IPv6Address": ""
}
},
"Options": {}
}
]
- コンテナに接続して内部から見てみる
$ docker attach grave_bhaskara
[root@7503c9bd3f7b /]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
16: eth0@if17: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.3/16 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::42:acff:fe11:3/64 scope link
valid_lft forever preferred_lft forever
24: eth2@if25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 02:42:ac:12:00:02 brd ff:ff:ff:ff:ff:ff
inet 172.18.0.2/16 scope global eth2
valid_lft forever preferred_lft forever
inet6 fe80::42:acff:fe12:2/64 scope link
valid_lft forever preferred_lft forever
26: eth3@if27: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 02:42:c0:a8:64:31 brd ff:ff:ff:ff:ff:ff
inet 192.168.100.49/24 scope global eth3
valid_lft forever preferred_lft forever
inet6 fe80::42:c0ff:fea8:6431/64 scope link
valid_lft forever preferred_lft forever
- eth2にisolated_nw, eth3にisolated_nw2らしきものがついていることがわかる。
- eth1は別のネットワーク一回つけて外したりしてたからその影響で出ていない。
[root@7503c9bd3f7b /]# ping 172.18.0.1
PING 172.18.0.1 (172.18.0.1) 56(84) bytes of data.
64 bytes from 172.18.0.1: icmp_seq=1 ttl=64 time=0.047 ms
64 bytes from 172.18.0.1: icmp_seq=2 ttl=64 time=0.046 ms
64 bytes from 172.18.0.1: icmp_seq=3 ttl=64 time=0.080 ms
^C
--- 172.18.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.046/0.057/0.080/0.018 ms
-
となるので、ネットワーク作成時にオプションをしていない場合は、先頭のアドレスがゲートウェイIPとして作成される模様。
-
ちなみにコンテナのルーティングはこんな感じ。
[root@7503c9bd3f7b /]# ip route
default via 172.17.0.1 dev eth0
172.17.0.0/16 dev eth0 proto kernel scope link src 172.17.0.3
172.18.0.0/16 dev eth2 proto kernel scope link src 172.18.0.2
192.168.100.0/24 dev eth3 proto kernel scope link src 192.168.100.49
[root@7503c9bd3f7b /]# traceroute 192.168.99.1
traceroute to 192.168.99.1 (192.168.99.1), 30 hops max, 60 byte packets
1 172.17.0.1 (172.17.0.1) 0.045 ms 0.011 ms 0.007 ms
2 192.168.99.1 (192.168.99.1) 0.207 ms 0.165 ms 0.126 ms
- ここまででわかったことを絵として整理すると、下記の様な構成になっていると思われる。
Multihost networking
- さて、ここまでわかったところで、複数VM上で動いているコンテナを同じネットワークで通信させてみたい。
- 大体こんなイメージになる予定。赤いセグメントが同じL3ネットワーク。
- 以下dockerのドキュメントをそのまま写経。
Key-Valueストアを作成する
- mh-keystoreというVirtualBoxを作成
$ docker-machine create -d virtualbox mh-keystore
Running pre-create checks...
Creating machine...
Waiting for machine to be running, this may take a few minutes...
Machine is running, waiting for SSH to be available...
Detecting operating system of created instance...
Provisioning created instance...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
To see how to connect Docker to this machine, run: docker-machine env mh-keystore
- このkey-valueストアはConsul, Etcd, ZooKeeperに対応している。
- 例ではdockerhubにあるConsulのboxを利用。
$ docker $(docker-machine config mh-keystore) run -d \
> -p "8500:8500" \
> -h "consul" \
> progrium/consul -server -bootstrap
Unable to find image 'progrium/consul:latest' locally
latest: Pulling from progrium/consul
3b4d28ce80e4: Pull complete
e5ab901dcf2d: Pull complete
30ad296c0ea0: Pull complete
3dba40dec256: Pull complete
f2ef4387b95e: Pull complete
53bc8dcc4791: Pull complete
75ed0b50ba1d: Pull complete
17c3a7ed5521: Pull complete
8aca9e0ecf68: Pull complete
4d1828359d36: Pull complete
46ed7df7f742: Pull complete
b5e8ce623ef8: Pull complete
049dca6ef253: Pull complete
bdb608bc4555: Pull complete
8b3d489cfb73: Pull complete
c74500bbce24: Pull complete
9f3e605442f6: Pull complete
d9125e9e799b: Pull complete
Digest: sha256:8cc8023462905929df9a79ff67ee435a36848ce7a10f18d6d0faba9306b97274
Status: Downloaded newer image for progrium/consul:latest
9d0d0eb96bb24d018dce219926d462424e064bfa9d1bd8139bda3c31c9134235
- ちゃんと動作しているか確認する。
$ eval "$(docker-machine env mh-keystore)"
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9d0d0eb96bb2 progrium/consul "/bin/start -server -" About a minute ago Up About a minute 53/tcp, 53/udp, 8300-8302/tcp, 8400/tcp, 8301-8302/udp, 0.0.0.0:8500->8500/tcp insane_mcclintock
Swarmクラスタを作成する
-
SwarmはDockerクラスタを作成するための実装。
-
詳しいことはここでは触れず、とりあえず組んでみる。
-
1号機の作成
$ docker-machine create \
> -d virtualbox \
> --swarm --swarm-image="swarm" --swarm-master \
> --swarm-discovery="consul://$(docker-machine ip mh-keystore):8500" \
> --engine-opt="cluster-store=consul://$(docker-machine ip mh-keystore):8500" \
> --engine-opt="cluster-advertise=eth1:2376" \
> mhs-demo0
Running pre-create checks...
Creating machine...
Waiting for machine to be running, this may take a few minutes...
Machine is running, waiting for SSH to be available...
Detecting operating system of created instance...
Provisioning created instance...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Configuring swarm...
To see how to connect Docker to this machine, run: docker-machine env mhs-demo0
- 2号機の作成
$ docker-machine create -d virtualbox \
> --swarm --swarm-image="swarm:1.0.0-rc2" \
> --swarm-discovery="consul://$(docker-machine ip mh-keystore):8500" \
> --engine-opt="cluster-store=consul://$(docker-machine ip mh-keystore):8500" \
> --engine-opt="cluster-advertise=eth1:2376" \
> mhs-demo1
Running pre-create checks...
Creating machine...
Waiting for machine to be running, this may take a few minutes...
Machine is running, waiting for SSH to be available...
Detecting operating system of created instance...
Provisioning created instance...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Configuring swarm...
To see how to connect Docker to this machine, run: docker-machine env mhs-demo1
- 作成後の確認
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM
default - virtualbox Running tcp://192.168.99.100:2376
mh-keystore * virtualbox Running tcp://192.168.99.102:2376
mhs-demo0 - virtualbox Running tcp://192.168.99.103:2376 mhs-demo0 (master)
mhs-demo1 - virtualbox Running tcp://192.168.99.104:2376 mhs-demo0
Overlayネットワークの作成
- やっと本論
- 1号機に入って、クラスタ情報の確認
$ eval $(docker-machine env --swarm mhs-demo0)
$ docker info
Containers: 3
Images: 2
Role: primary
Strategy: spread
Filters: health, port, dependency, affinity, constraint
Nodes: 2
mhs-demo0: 192.168.99.103:2376
└ Containers: 2
└ Reserved CPUs: 0 / 1
└ Reserved Memory: 0 B / 1.021 GiB
└ Labels: executiondriver=native-0.2, kernelversion=4.1.12-boot2docker, operatingsystem=Boot2Docker 1.9.0 (TCL 6.4); master : 16e4a2a - Tue Nov 3 19:49:22 UTC 2015, provider=virtualbox, storagedriver=aufs
mhs-demo1: 192.168.99.104:2376
└ Containers: 1
└ Reserved CPUs: 0 / 1
└ Reserved Memory: 0 B / 1.021 GiB
└ Labels: executiondriver=native-0.2, kernelversion=4.1.12-boot2docker, operatingsystem=Boot2Docker 1.9.0 (TCL 6.4); master : 16e4a2a - Tue Nov 3 19:49:22 UTC 2015, provider=virtualbox, storagedriver=aufs
CPUs: 2
Total Memory: 2.043 GiB
Name: dd559ef9a9a0
- ここでネットワーク情報を見ると、両方のネットワークが見える。
- ここには記載しないが、もう片方のVMでも同じ結果が返る。
$ docker network ls
NETWORK ID NAME DRIVER
a2f0bf73fe04 mhs-demo1/host host
c54eeb866199 mhs-demo1/bridge bridge
ad24cc1f7c67 mhs-demo0/bridge bridge
4ee522eb9e50 mhs-demo0/none null
1f44eb3f6bb5 mhs-demo0/host host
1ecae89cb7f3 mhs-demo1/none null
- Overlayネットワークを定義。
- ちょっとここはパラメータも設定するように変更を加えている。
$ docker network create --driver=overlay --gateway=10.0.0.254 --subnet=10.0.0.0/24 myoverlay
ddc210fbc114e17007364304d4694ad6bd916d604cc7130aa596bb0d74da1088
- 作成の確認
$ docker network ls
NETWORK ID NAME DRIVER
c54eeb866199 mhs-demo1/bridge bridge
1ecae89cb7f3 mhs-demo1/none null
ddc210fbc114 myoverlay overlay
ad24cc1f7c67 mhs-demo0/bridge bridge
4ee522eb9e50 mhs-demo0/none null
1f44eb3f6bb5 mhs-demo0/host host
a2f0bf73fe04 mhs-demo1/host host
- 詳細も確認。scopeがglobalになっている。
$ docker network inspect myoverlay
[
{
"Name": "myoverlay",
"Id": "ddc210fbc114e17007364304d4694ad6bd916d604cc7130aa596bb0d74da1088",
"Scope": "global",
"Driver": "overlay",
"IPAM": {
"Driver": "default",
"Config": [
{
"Subnet": "10.0.0.0/24",
"Gateway": "10.0.0.254"
}
]
},
"Containers": {},
"Options": {}
}
]
コンテナの接続
- mhs-demo0に接続したまま、コンテナを1つ立ち上げる。
$ docker run -it --rm --net=myoverlay --env="constraint:node==mhs-demo1" centos:7 bash
その後、インタフェースを確認すると
[root@431da5667795 /]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
11: eth0@if12: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP
link/ether 02:42:0a:00:00:01 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.1/24 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::42:aff:fe00:1/64 scope link
valid_lft forever preferred_lft forever
14: eth1@if15: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 02:42:ac:12:00:02 brd ff:ff:ff:ff:ff:ff
inet 172.18.0.2/16 scope global eth1
valid_lft forever preferred_lft forever
inet6 fe80::42:acff:fe12:2/64 scope link
valid_lft forever preferred_lft forever
- さらにもう1つ、今度はdemo0側に立ち上げる
- 別のターミナルを立ち上げ、下記を実行し、コンテナをもう1つ作成する。
$ eval $(docker-machine env --swarm mhs-demo0)
$ docker run -it --rm --net=myoverlay --env="constraint:node==mhs-demo0" centos:7 bash
- ログインしたコンテナ内のインタフェースを確認する。
[root@764922b8a219 /]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
13: eth0@if14: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP
link/ether 02:42:0a:00:00:02 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.2/24 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::42:aff:fe00:2/64 scope link
valid_lft forever preferred_lft forever
16: eth1@if17: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 02:42:ac:12:00:02 brd ff:ff:ff:ff:ff:ff
inet 172.18.0.2/16 scope global eth1
valid_lft forever preferred_lft forever
inet6 fe80::42:acff:fe12:2/64 scope link
valid_lft forever preferred_lft forever
- 謎のeth1がついているが、これを追求する前にまずはoverlay経由で接続できることを確認したい。
- 念のため、もう1つのターミナルを立ち上げ、それぞれのコンテナが別のホスト上にいることを確認する。
$ eval $(docker-machine env --swarm mhs-demo0)
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
764922b8a219 centos:7 "bash" 2 minutes ago Up 2 minutes mhs-demo0/nostalgic_bell
431da5667795 centos:7 "bash" 5 minutes ago Up 5 minutes mhs-demo1/distracted_chandrasekhar
- 次にどちらかのコンテナに潜入し、pingを打つ。今回はmhs-demo0/nostalgic_bell側より行う。
$ docker attach mhs-demo0/nostalgic_bell
[root@764922b8a219 /]# ping 10.0.0.1
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.601 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=1.02 ms
64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=1.06 ms
^C
--- 10.0.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 0.601/0.896/1.062/0.210 ms
- ちゃんと疎通とれました!
謎インタフェースの正体
- おもむろに下記コマンドを叩く
$ docker network ls
NETWORK ID NAME DRIVER
c54eeb866199 mhs-demo1/bridge bridge
1f44eb3f6bb5 mhs-demo0/host host
20bb3a4f7b7d mhs-demo0/docker_gwbridge bridge
4ee522eb9e50 mhs-demo0/none null
1ecae89cb7f3 mhs-demo1/none null
a2f0bf73fe04 mhs-demo1/host host
57d603c8f9a0 mhs-demo1/docker_gwbridge bridge
ddc210fbc114 myoverlay overlay
ad24cc1f7c67 mhs-demo0/bridge bridge
-
なんか増えてる・・・
-
mhs-demo[0-1]/docker_gwbridge
-
例のドキュメントを漁ったところ、自動的に付与される外部との接続性を持たせるネットワークであることが判明。
-
つまり、overlay側からは外部に抜けられないということか?
-
gateway ipまでは疎通が取れていたので、それ以降を確認したいが、ルーティングの変更が効かない
-
とりあえずgwbridgeネットワークを外してみる。
$ docker network disconnect mhs-demo1/docker_gwbridge distracted_chandrasekhar
Error response from daemon: container 431da56677956945a0dbca802c35604ff06339953d7e8e58b34b05fc2cb68e0c failed to leave network docker_gwbridge: container 431da56677956945a0dbca802c35604ff06339953d7e8e58b34b05fc2cb68e0c: endpoint create on GW Network failed: service endpoint with name gateway_431da5667795 already exists
-
なんかエラーになるが、コンテナ上から見る限り外れている。
-
が、やっぱりルーティングの変更ができない・・・
-
でもここの話題とはまた別で追求するものにする。
最終的な構成
- 最終的に出来たネットワークはこんなイメージ。
- overlayに設定したgateway ipだけ正確に確認できていない。
結論
- 結構簡単にネットワークを切ったり外したりできる。
- きっとそのうち、vSphereみたいないい感じのUIとかも出てくるんだろうなぁと思った。
- 前やった時はopen vSwitch使ってVXLANしたけど、随分簡単に組めるようになったなぁ、という印象。
- 今回未解決の話題についてはまた別途検討する。