今回はテスト用に、CentOS 6.8のDockerイメージを入手します。
# docker pull centos:6.8 # docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos 6.8 0cd976dc0a98 4 months ago 194.5 MB
入手したCentOS 6.8のDockerイメージから、コンテナc1(ホスト名はc1)とコンテナc2(ホスト名はc2)を起動します。コンテナのホスト名は、コンテナ起動時に「-h」オプションで付与可能です。Dockerでは、コンテナ起動時に「--net=」でコンテナのネットワークモードを明示的に指定できますが、ここではコンテナにネットワークインタフェース(仮想NIC)が自動的に付与されないように、「--net=none」を指定しておきます。
# docker run -itd --name c1 -h c1 --net=none centos:6.8 # docker run -itd --name c2 -h c2 --net=none centos:6.8
コンテナc1とc2が稼働しているかを確認します。
# docker ps -a CONTAINER ID IMAGE COMMAND ... STATUS ... NAMES 72caf53bc996 centos:6.8 "/bin/bash" ... Up 25 minutes ... c2 7ae9edf17dea centos:6.8 "/bin/bash" ... Up 25 minutes ... c1
現時点では、ネットワークインタフェースの存在しないコンテナが2つ稼働している状態です。それでは、先ほどインストールしたovs-dockerコマンドを使って、コンテナc1に固定IPアドレスを付与します。今回は、コンテナc1のIPアドレスとして「172.16.1.171/16」、デフォルトゲートウェイを「172.16.1.1」に設定します。また、MACアドレスも明示的に設定しておきます。
# ovs-docker add-port br-ex eth0 c1 \ > --ipaddress=172.16.1.171/16 \ > --gateway=172.16.1.1 \ > --macaddress="00:01:02:03:04:05"
同様に、コンテナc2にもIPアドレス、デフォルトゲートウェイ、MACアドレスを設定します。
# ovs-docker add-port br-ex eth0 c2 \ > --ipaddress=172.16.1.172/16 \ > --gateway=172.16.1.1 \ > --macaddress="00:01:02:03:04:06"
以上で、コンテナc1とc2に固定IPアドレスが付与されました。稼働中のコンテナc1とc2のIPアドレスをホストOS上から確認します。
# docker inspect \ > --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' \ > c1 172.16.1.171 # docker inspect \ > --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' \ > c2 172.16.1.172
再びovs-vsctlコマンドにshowを付与し、OVSブリッジの状態を確認します。
# ovs-vsctl show 25d8ffb2-b620-469f-9944-df87cb829aa7 Bridge br-ex Port "eth0" Interface "eth0" Port br-ex Interface br-ex type: internal Port "ad078bb715764_l" Interface "ad078bb715764_l" Port "6d88c5d59f814_l" Interface "6d88c5d59f814_l" ovs_version: "2.5.0"
Copyright © ITmedia, Inc. All Rights Reserved.