DockerConで最初のビッグニュースはDocker 1.0のリリースだ。だがそれだけではない。DockerCon Tシャツの背中に書かれていた"Containers everywhere!"を,ベイエリアの大手サービスプロバイダたちが数多くの証拠で証明していた。さらに"ネットワークサービス構築の最小限主義的ツールキット"のlibswarmや,"超軽量ネットワークサービス"の libchanなど,libcontainerに関連するパートナからのローンチもあった。
Google, Facebook, Twitterのすべてが,コンテナの大規模な運用に関して講演を行った。3社とも現時点ではDockerコンテナを中心とした運用はしてはないが,Docker登場以前に自社開発した環境からのマイグレーションを検討中の企業もある。各社に共通するテーマは,独自のオーケストレーションシステム構築だ。Drone.io創設者のBrad Rydzewski氏がコメントしたように,"#docerconで分かったのは,誰もが,本当に誰もが,自身のオーケストレーションプラットフォームを構築していることです。" この問題への対処として,Docker社CTOのSolomon Hykes氏が2日目の基調講演で発表したのは,複数のオーケストレーションシステムを運用可能なライブラリlibswarmだ。Orchardを使ったビデオデモでは,複数のDockerサービスを同じコマンドライン環境からコントロールする様子が示されている。このライブラリに関しては,Solomon Hykes氏とのインタビューを紹介したActivestateのPhil Whelan氏による記事が詳しい。
今回のイベントではEric Brewer氏による基調講演や,Craig Mcluckie, Bendan Burns, Ekaterina Volkova各氏のプレゼンテーションなど,Googleの存在感が非常に大きかった。その中でも最大のニュースは,オープンソースのコンテナ管理システムKubernetes(Google社内でローンチに使用されているOmegaシステムの縮小版)のリリースだ。さらにcAdvisorという,実行中のコンテナのリソース使用状況パフォーマンス特性を解析するツールもローンチした。Googleは社内においても,独自仕様のコンテナからDockerイメージへの移行に取り組んでいる。同社のクラウドプラットフォームであるGoogle Compute Engine(GCE)とGoogle App Engine(GAE)内でのDocker機能の改良に関する発表もあった。
IBMのBoden Russell氏が,メモリとCPUの使用量を中心としてDockerとKVMを比較したベンチマークの発表を行った。氏は以前にも,コンテナベースのアプローチがメモリ使用量(データセンタにおける主要なコスト発生源である)や起動時間の実質的な削減につながるという,自身の見解をブログに記している。同社はまた,Netflix OSSツールとのインテグレーションとして,ラップトップ上のChaos Monkeyからの攻撃下でサンプルアプリケーションを実行して,それを同社のSoftlayerクラウドに移行するデモも行っている。
DockerはGo言語で記述されているので,libchanの生成はGoのチャネルが起点となる。そのため,libchanは"ネットワークを越えたGoチャネル"である,と説明されている。Goのチャネルはメモリ上での動作に加えて,UnixのソケットやTCP直接,TLS,HTTP2/SPDYやWebソケットでも実行可能だ。メッセージパッシングや並列プログラムの同期処理などを意図したチャネルは,入れ子構造,つまりチャネルでチャネルを送るようなこともできる。ライブラリが目標とするのは,マイクロサービスに必要な,以下のようなメッセージングをサポートすることだ。
- 任意のデータ構造による要求/応答処理。
- リアルタイムで双方向送信される非同期イベント。
- 要求と応答を任意の方向に送出可能であること,かつ任意に入れ子にできること。例えば自己登録型ワーカモデルの実装に必要だ。
- json, msgpack, xml, protobufなど,任意の直列化フォーマットをプラグイン可能であること。
libcontainerは,Linux OS用サンドボックスの標準インターフェースだ。当初はDocker 0.9と合わせてローンチされていたが,現在はそこから分離した独立プロジェクトである。さらにDocker Inc以外からも,重要なコントリビューションが数多く寄贈された。Red HatからはSElinuxとsystemdのインテグレーション,Ubuntuからはcgroup統合インターフェース,そしてPararellsにコアメンテナとして2人のGoogle技術者が加わったジョイントプロジェクトからは,LXCとOpenVZ, C言語によるlibcontainerなどの実装が提供されている。
Red Hatは同社のProject Atomicを披露した。Docker用に機能縮小したLinuxディストリビューションで,OpenShiftに統合可能なDockerオーケストレーションシステムであるGearDを備えている。Red HatのDan Walsh氏は,SELinuxのDockerへの組み込みについてプレゼンテーションを行うとともに,SELinux coloring bookという面白い自著についても紹介した。その中で氏は,コンテナ化がセキュリティの観点でどのような意味を持つのか,SELinuxなどさまざまなカーネルサポートツールを用いることで,どのようなコントロールを追加することができるのかといった点を,適確に説明してくれた。