Dockerは6月20日(米国時間)、米シアトルで開催中の年次カンファレンス「DockerCon 2016」において「Docker 1.12」のリリースを発表した。Docker 1.12ではこれまで外部ツールとして提供されていたDocker Engineクラスタを構成する「Swarm」をコアに統合、ネイティブのオーケストレーション機能として提供する。
- Docker 1.12: Now with Built-in Orchestration! | Docker Blog
Swarmをネイティブ統合したことで、Dockerは複数の環境に分散するコンテナをひとつのSwarmグループとして扱うことが可能になる。これまで必要だった外部ツールも不要で、シンプルかつ強力なオーケストレーションが実現することになる。
ここで注目したいのが、Swarmグループを構成するノードにアクセスする際、Linuxカーネルの内部ロードバランサー機能(レイヤ4)である「Linux IPVS(IP Virtual Server)」を採用している点だ。Linux 2.4の時代からすでに15年以上に渡って利用されてきたIPVSをDocker 1.12に取り入れた理由について、Dockerのエンジニアであるブライアン・ゴフ氏は「IPtablesを使うと、ユーザサイドのファイアウォールのルールとコンフリクトしてしまい、UFWなどのファイアウォール設定ツールが見えにくくなる。一方、IPVSであればIPtablesのような問題は起こらず、自然なルーティングが実現する」とコメントしている。
DockerコンテナでIPVSをルーティングに使うケースは今回が初めて紹介されたわけではなく、すでに2015年12月のDockerCon Europeにおいて、Uber Technologiesによる「GORB(Go Routing and Balancing)」という実装が発表されている。この発表では「IPVSを採用することで、ダイレクトコネクションの5%程度の高速なパフォーマンスを担保できる」ほか、IPVSがレイヤ4のマルチプロトコルロードバランサーであることから「TCPだけでなくUDPもサポートでき、ダイナミックコンフィギュレーションできるメリットが大きい」という報告がなされている。GORBでは高価なロードバランサーを用意しなくても、Linuxカーネルで長い期間使われてきたIPVSを利用することで、高速かつセキュアにルーティングできる点が高く評価されたが、Docker 1.12で正式に採用されたことであらためてその有用性が証明されたといえる。
- GitHub- kobolog/gorb: Go Routing and Balancing
DockerCon 2016ではDocker 1.12のほか、パブリッククラウド向けのサービスである「Docker for AWS」「Docker for Azure」(いずれもベータ公開)、Windows/Mac版のDockerのパブリックベータなどが発表されている。
- Introducing the Docker for AWS and Azure Beta | Docker Blog
- Announcing the Docker for Mac and Windows Public Beta | Docker Blog