ソフトウェア定義型ネットワークを実現する「pipework」のコンテナを実際に使って、ホストOSとDockerコンテナを同一LANセグメントに所属させることで、マルチホストのコンテナ間通信を行う手順を解説します。
今回は、前回紹介したソフトウェア定義型ネットワークを実現する「pipework」のコンテナを実際に使って、ホストOSとDockerコンテナを同一LANセグメントに所属させることで、マルチホストのコンテナ間通信を行ってみます。
pipeworkを使って、ホストOSと同一LANセグメントの固定IPアドレスをDockerコンテナに付与する手順は以下のとおりです。
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 |
マシン | 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 |
マシン | 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コンテンツにアクセスできるかどうかをテストします。
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にインストールすることができました。
Copyright © ITmedia, Inc. All Rights Reserved.