第30回 Docker Swarmを知る 複数の物理サーバでDocker環境をクラスタ化する方法古賀政純の「攻めのITのためのDocker塾」(1/3 ページ)

複数の物理サーバで稼働するDockerコンテナ同士が通信するには、どうすればよいのでしょうか。そのためには、Docker特有のコンポーネントを理解する必要があります。今回は、Docker環境のネットワーキングを実現するソフトウェアコンポーネントと具体的なコンテナ間の通信方法を紹介します。

» 2016年10月19日 08時00分 公開

複数の物理サーバで稼働するコンテナ同士の通信

 Dockerの登場以来、コミュニティーで盛んに議論されていた話題の一つに、複数の物理サーバで稼働するコンテナ同士の通信(一般的にマルチホストネットワークといいます)があります。この連載で紹介していた内容は、全て1台の物理サーバでコンテナを稼働させるものでした。しかし、実際のエンタープライズシステムでは複数の物理サーバを用意し、その上で稼働するコンテナ同士で通信を行うことがシステムの要件として求められます。

 複数の物理サーバで稼働するコンテナ同士でTCP/IP通信を行う方法としては、主に以下の2種類のネットワーク構成が挙げられます。

  • オーバレイネットワーク(VXLAN)
  • ブリッジ接続によるネットワーク

 1つ目のオーバレイネットワークによる方法では、簡単に言えば、Dockerホストが提供するdocker0によるブリッジインタフェースが所属する既存ネットワークとは別に、Dockerコンテナ同士が通信する仮想的なネットワークを構築します。オーバレイとは「かぶせる」という意味ですが、既存のネットワーク上にさらにコンテナ同士の通信専用ネットワークをかぶせるイメージから、「オーバレイネットワーク」と呼ばれています。このオーバレイネットワークは、既存の物理NICやdocker0ブリッジの設定を変更せずにコンテナ通信用のネットワークを形成し、柔軟性の高いソフトウェア定義型ネットワークを構築することができます。

 この構成は、VXLAN(Virtual eXtensible Local Area Network)よって実現されています。VXLANは、レイヤ3(L3)のネットワーク上に論理的なレイヤ2(L2)ネットワークを構築できるトンネリングプロトコルであり、大規模なデータセンターでのマルチテナント環境を意識した設計になっています。VXLAN自体はOpenStackなどでも採用されており、ソフトウェア定義型ネットワーク(SDN)を構成するクラウド基盤では必要不可欠となっています。

Dcoker Dockerにおけるオーバレイネットワーク

一新されたDocker Swarm

 従来のDocker環境でオーバレイネットワークを実現するには、ネットワーク情報を保持するためのDocker純正ではないサードパーティ製の「分散キーバリューストア」(consulやetcdと呼ばれるソフトウェアなど)が必要でした。しかし2016年7月28日に登場したDocker 1.12によって不要になりました。

 また、複数のDockerホストをクラスタ化する「Docker Swarm」(ドッカー・スウォーム)がDockerエンジンにビルトインされ、複数の物理サーバからなるオーバレイネットワークを簡単に構築できるようになりました。このDocker Swarmクラスタ内で定義したオーバレイネットワークにより、Docker Swarmに所属するDockerコンテナ間でネットワーク通信ができるようになったのです。

 Docker Swarmは、複数のDockerホストを束ねて一つのクラスタを形成するためのソフトウェアコンポーネントです。Docker 1.11までは、Dockerエンジンとは別のソフトウェアコンポーネントとして配布されていました。

Dcoker Docker Swarmの昔と今
       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ