第35回 Open vSwitchで作るDockerのネットワーク(OVSで構築する編)古賀政純の「攻めのITのためのDocker塾」(4/6 ページ)

» 2017年02月08日 07時30分 公開

仮想NICを持たないDockerコンテナの起動

 今回はテスト用に、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   

Dockerコンテナに仮想NICを追加し、固定IPアドレスを設定する

 現時点では、ネットワークインタフェースの存在しないコンテナが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.