第37回 Dockerでソフトウェア定義型ネットワーキングツール「pipework」を活用する古賀政純の「攻めのITのためのDocker塾」(1/2 ページ)

前回まで、3回に渡ってOpenStackでも利用されているソフトウェア定義型ネットワーキングを実現するOpen vSwitch(OVS)とovs-dockerを使ってホストOSとコンテナを同一LANセグメントに所属させ、マルチホストのコンテナ間通信を実現しました。今回は、Docker基盤で古くから利用されている「pipework」を使ったネットワーキングをご紹介します。

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

「pipework」とは

 pipeworkは、ソフトウェア定義型ネットワークを実現するソフトウェアです。Dockerコンテナに対して、IPアドレス、ネットマスク、デフォルトゲートウェイの設定などを行うことができます。連載第34回第35回第36回でご紹介したOVS環境では、ovs-dockerによって、Dockerコンテナに固定IPアドレスの付与などを行いましたが、これと同様の操作を行うのがpipeworkです。pipeworkは、Dockerの世界において、比較的古くから利用されており、導入も非常に簡単であることから、現在でも国内外を問わず広く利用されています。OS標準のLinuxブリッジを使った環境だけでなく、Open vSwitch(OVS)環境でも利用できます。pipeworkは、シェルスクリプトで記述されており、Dockerエンジンが稼働する主要なLinuxディストリビューションで動作します。

pipeworkの概要 pipeworkの概要

多機能なpipework

 pipeworkには、さまざまな機能があります。ここでは、pipeworkが提供する魅力的なネットワーク管理機能をいくつかご紹介します。

Dockerコンテナへの固定IPアドレスの付与

 pipeworkの典型的な利用方法は、コンテナへの固定IPアドレスの割り当てです。pipework自体は、ホストOS上から操作し、コンテナに対して、固定IPアドレス、ネットマスク、デフォルトゲートウェイ、MACアドレスの割り当てなどを行います。

ブリッジインタフェース(Linuxブリッジや、OVSブリッジ)をホストOS側で構築しておけば、あとは、pipeworkによって、ホストOSと同一LANセグメントの固定IPアドレスをDockerコンテナに簡単に付与できます。

pipeworkでNIC作成と固定IPアドレス付与 pipeworkによるNICの作成と固定IPアドレスの付与

DHCPクライアント機能

 pipeworkでは、管理対象とは別に用意されたDHCPサーバーが付与する動的IPアドレスをコンテナに割り当てる「DHCPクライアント」の機能があります。クラウド基盤などのように、ユーザーに対してコンテナ環境を自動的に割り当てる際に、IPアドレスも自動で動的に割り当てる必要があります。そのような場合に、DHCPサーバの動的IPアドレスの付与機能と、pipeworkのDHCPクライアント機能を組み合わせることで、コンテナに動的IPアドレスを割り当てることができます。DHCPサーバ側でコンテナのIPアドレスを一元管理できるようになるため、コンテナのIPアドレスの付与作業等の管理の手間を大幅に削減できます。

pipewowrkとDHCPサーバで動的にIPアドレス割り当て pipeworkとDHCPサーバによる動的IPアドレスの割り当て

 ちなみに、現在は、DHCPサーバを搭載したDockerイメージがコミュニティによって提供されており、DHCPサーバ自体もDockerコンテナで稼働させることが可能です。DHCPサーバをDockerコンテナで稼働させる場合、DHCPサーバコンテナは、ホストネットワークに直接接続する「ホストモード」による構成か、あるいは、Linuxブリッジ、およびOVSブリッジを経由してホストOSと接続する「ブリッジ構成」で稼働できます。

pipewowrk DHCPサーバコンテナをホストネットワークと直接接続 DHCPサーバコンテナをホストネットワークと直接接続
pipewowrk DHCPサーバコンテナをOVSブリッジ経由で接続 DHCPサーバコンテナをOVSブリッジ経由で接続

送信帯域幅制御機能

 通信事業者やサービスプロバイダーの中には、ユーザーのデータ通信の使用量に基づいて、通信速度を制限するといった仕組みがみられます。これと同じような通信速度の制限を実現する方法の1つに、OSが提供するネットワーク帯域幅制御機能が挙げられます。具体的には、tcコマンドやcgroup(コントロールグループ)によって、ネットワークインタフェースやプロセスの通信帯域幅を制限することが可能です。pipeworkでは、tcコマンドの仕組みを利用し、Dockerコンテナが通信する帯域幅を制限します。また、tcコマンドを使ったpipeworkによる帯域幅制御では、Dockerコンテナを稼働させたまま、帯域幅を変更することができます。例えば、現在の帯域幅の設定を1Mbpsに制限する、あるいは、逆に1000Mbpsに変更するといった指定が可能です。ただし、pipeworkに限らず、tcコマンドは、送信の帯域幅制御のみを行い、受信の帯域幅制御は行いませんので、注意が必要です。

pipeworkによるDockerコンテナの送信帯域幅制御 pipeworkによるDockerコンテナの送信帯域幅制御
       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ