第38回 pipeworkでDockerコンテナに固定IPアドレスを付与する(構築編その1)古賀政純の「攻めのITのためのDocker塾」(1/2 ページ)

ソフトウェア定義型ネットワークを実現する「pipework」のコンテナを実際に使って、ホストOSとDockerコンテナを同一LANセグメントに所属させることで、マルチホストのコンテナ間通信を行う手順を解説します。

» 2017年03月28日 12時00分 公開

pipeworkでフラットなネットワークを構築し、コンテナを通信させる

 今回は、前回紹介したソフトウェア定義型ネットワークを実現する「pipework」のコンテナを実際に使って、ホストOSとDockerコンテナを同一LANセグメントに所属させることで、マルチホストのコンテナ間通信を行ってみます。

 pipeworkを使って、ホストOSと同一LANセグメントの固定IPアドレスをDockerコンテナに付与する手順は以下のとおりです。

  1. ホストOSにOpen vSwitchをインストールし、OVSブリッジを構成
  2. Dockerエンジンのインストール
  3. pipeworkをインストール
  4. ネットワークインタフェースを付与せずに、Dockerコンテナを稼働
  5. pipeworkコマンドで、Dockerコンテナに固定IPアドレスを付与
  6. 同一LANセグメント内のクライアントからの疎通確認

 OSは、CentOS 7.3を想定します。また、Dockerエンジンは、2017年3月時点での最新バージョンである「17.03.0-ce」(Docker エンジンのコミュニティエディション)を使用しています。ネットワーク構成は、以下のとおりです。

ネットワーク構成
物理マシン サーバ1号機 サーバ2号機 Linux PC
役割 コンテナc1の稼働 Webサーバーコンテナc2の稼働 クライアント
ホストOS CentOS 7.3 CentOS 7.3 CentOS 7.3
Dockerエンジン 17.03.0-ce 17.03.0-ce
稼働させるコンテナ c1 c2 なし
ホストOSのIPアドレス 172.16.1.161/16 172.16.1.162/16 172.16.1.163/16
ホストOSのゲートウェイ 172.16.1.1 172.16.1.1 172.16.1.1
ホストOSのDNS参照先 172.16.1.254 172.16.1.254 172.16.1.254

サーバー1号機のネットワーク構成(OVSを使用)
マシン NIC ブリッジ MACアドレス IPアドレス
ホストOS eth0 br-ex 6C:3B:E5:50:3B:30 172.16.1.161/16
コンテナc1 eth0 00:01:02:03:04:05 172.16.1.91/16

サーバー2号機のネットワーク構成(OVSを使用)
マシン NIC ブリッジ MACアドレス IPアドレス
ホストOS eth0 br-ex 3C:4A:92:B2:8B:64 172.16.1.162/16
コンテナc2 eth0 00:01:02:03:04:06 172.16.1.92/16

 今回は、pipeworkを使って、コンテナc1とコンテナc2に固定IPアドレスを付与します。そして、コンテナc2にWebサーバをインストールし、コンテナc1と、同一LANセグメント上のクライアントマシンなどから、コンテナc2が提供するテスト用のWebコンテンツにアクセスできるかどうかをテストします。

図. 固定IPアドレスを付与したWebサービスコンテナのシステム構成 図. 固定IPアドレスを付与したWebサービスコンテナのシステム構成

pipeworkを稼働させる

 pipework稼働の前提条件として、連載第35回で紹介した内容を元に、ホストOSにOpen vSwitch(OVS)とDockerエンジンをインストールしておいてください(※)。

※補足

連載の第35回では、OVSをインストールするにあたり、2017年1月時点でのOpenStackコミュニティのバージョン「Newton」に対応したリポジトリを追加する方法を紹介しましたが、2017年3月時点では、以下のように、OpenStackの最新バージョン「Ocata」に対応したリポジトリを追加することで、OVSの最新パッケージをインストールできます。

# yum install -y  \ https://repos.fedorapeople.org/repos/openstack/openstack-ocata/rdo-release-ocata-2.noarch.rpm

 まずは、物理サーバの1号機と2号機のホストOSにpipeworkをインストールします。curlコマンドで入手しますので、プロキシサーバ経由でインターネットにアクセスする場合は、以下のように事前にhttp_proxyやhttps_proxyの環境変数をセットしてください。

# export http_proxy=http://proxy.your.site.com:8080
# export https_proxy=http://proxy.your.site.com:8080
# curl -sL https://raw.githubusercontent.com/jpetazzo/pipework/master/pipework > /usr/local/bin/pipework
# file /usr/local/bin/pipework
/usr/local/bin/pipework: POSIX shell script, ASCII text executable
# chmod +x /usr/local/bin/pipework
# ls -l /usr/local/bin/pipework
# which pipework
/usr/local/bin/pipework

 また、pipeworkの動作に必要なパッケージもホストOS上にインストールしておきます。

# yum install -y iproute

 以上で、pipeworkコマンドをホストOSにインストールすることができました。

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ