SDNによって変わるDockerのネットワーク 第01回 15年05月 / 最終更新:2022.12.22

はじめまして、大喜多利哉と申します。このコラムでは、日本国内/海外の最新ネットワーク技術情報についてお届けしてまいります。

先日、Docker社がSDN(Software-Defined Networking)技術を開発してきたスタートアップ企業「SocketPlane」を買収したと発表しました。
http://www.publickey1.jp/blog/15/dockersoftware-defined_networkingsocketplanedocker.html

Dockerは近年オーケストレーションツールを開発し公開するなど、コンテナ技術を基盤としたDockerのプラットフォーム拡充を進めています。それでは、DockerとSDN技術の融合によってどのようなことが起こるのでしょうか。

Dockerは「コンテナ型仮想化技術」として説明されることが多いのですが、厳密にはDocker自体は「コンテナ型仮想化技術」ではありません。Dockerの本質は「LXC(Linux Container)の技術を活用しコンテナ型の仮想サーバ環境をDockerfileと呼ばれるイメージで管理/配布/適用できること」にあります。

Dockerfileにはアプリケーションフレームワーク・ライブラリ・OSイメージ等、OS上の環境を完全にイメージファイル化することができます。このイメージはDockerの環境さえあればどこにでも適用することができます。そのためソフトウェア改修の際に、テストが完了し動作が保証されている開発環境のインフラをイメージ化し、イメージから新しい本番環境を作成しそっくり置き換えるということが可能になります。この考え方を「Immutable Infrastructure」と呼びます。メリットとしては以下のとおりです。

1.開発環境と本番環境の差異による想定外の不具合を回避できる。
2.イメージから同一構成のサーバを複数作成してスケールアウトさせることが容易になる。また、スケールアウト後の管理も単一のイメージファイルを管理すればよいので常に同一の環境を維持できる。

つまりDockerとは「サーバインフラのイメージ管理システム」であり、それを実現する環境としてLXCが使用されているにすぎないと言えます。ですのでDockerのメリットとしてよく掲げられる「コンテナ型仮想化技術によりハイパーバイザ型仮想化技術よりもオーバーヘッドが少ない」というのは、実はDockerのメリットではなくLXCのメリットなのです。

Dockerの動作環境はLXCの技術に依存しています。LXCは標準ではコンテナ専用NICが仮想ルータのような動作をします。

ookita01_01

また、Docker0.9からはホストネットワーク機能が実装され、こちらを使用するとコンテナのIP=ホストOSのIPとして動作します。

ookita01_02

これらの方式では、外部からDockerにネットワークアクセスする際はdocker0またはeth0がポートフォワーディング動作することになります。複数のDocker環境とレイヤ2接続して同じネットワーク空間を共有することもできませんし、VMware ESXiのvSwitchのようにホストOSと同一ネットワークに属させたり、VLANインタフェースとさせたりすることもできません。現状ではDocker+LXCのみではネットワーキングに大きな制約があると言えます。

より柔軟なネットワーキングを可能にするために、Open vSwitchを組み合わせて構築する方法もありますが、その構築/運用にはそれなりの学習コスト・運用コストが発生します。今回DockerがSocketPlaneを買収したことにより、SocketPlaneのSDN技術を活用して、Dockerのネットワーキングがより柔軟で拡張性のあるものになるか、注目していきたいと思います。

###
鈴与シンワートではS-PortのFacebookページも運営しています。本コラムの更新情報は公式Facebookページでもお届けしています。
Facebookのアカウントをお持ちの方は是非以下のFacebookページもチェックください。
https://www.facebook.com/sport.shinwart