Googleはコンテナを使ってあらゆるものを動かしている。1週間に20億ものコンテナが起動している。
Google Cloud PlatformのエンジニアであるJoe Beda氏はGlueconでプレゼンを行い、同社のLinuxコンテナの使い方についてプレゼンした。氏によれば、Googleのあらゆるものはコンテナで動作している。同社は1週間に20億ものコンテナを起動している。秒間に3000。長期間動作しているコンテナを数えずに、だ。
Googleは2004年からコンテナ技術を使っており、2006年にcgroupsをリリース。そして昨年、Let Me Contain That For You (lmctfy)というオープンソースプロイジェクトを開始した。このプロジェクトの目的はGoogle版のオープンソースのコンテナスタックを開発することだ。このコンテナスタックは、LXCを置き換えるLinuxアプリケーションコンテナを提供する。コンテナによって、単一のマシン上で動いている複数のアプリケーションが利用しているリソースを分離することができる。アプリケーションは同一マシン上で分離して動作できるようになる。アプリケーションはコンテナ上で動作していることを確認できるはずなので、独自のサブコンテナを作成し管理することもできる。
GoogleのソフトウエアエンジニアであるRohit Jnagal氏はlmctfyについて次のように語っている。
2007年から社内のリソース分離のニーズをlmctfyでまかなっています。これまで、lmctfyはGoogleのインフラの中に細切れになって混ざっていました。再設計している間、私たちはこのlmctfyのレイヤをきれいに取り出すことができました。そして、これを公開したら面白いのではないかと考えたのです。
lmctfyとLXCの主要な違いについても次のように語る。
-
リソース管理API: LXC APIは名前空間をサポートするために作られ、ほとんど透過的にcgroupのサポートを公開する。lmctfyの場合、Googleはインテントベースのリソース構成を提供しようとしている。この場合、ユーザはcgroupsの詳細を知る必要はない。cgroupsのAPIは不安定で扱うのが難しいのだ。
-
優先順位: lmctfyはリソースの共有をサポートし、バッチの負荷でオーバーコミットしているマシンをサポートする。そのようなバッチはマシンが相対的にアイドル状態のときに実行することができるはずだ。すべてのアプリケーションには優先順位があり、レイテンシの要件が決まっている。lmctfyはcgroupの細かな点をすべて管理し、各タスクの要件を考慮する。
-
プログラミング可能なインターフェース: lmctfyはGoogleのクラウドのアプリケーション管理の最も低い位置にあるブロックだ。ほかのツールやプログラムとともに動くように構築されており、より複雑なツールチェーンをこの上に構築できるように堅牢に作られている。
GoogleはGoogle Cloud Platformへコンテナを統合しようとしている。ノードコンテナマネージャはGoogleによってオープンソース化されている。これは、小さなエージェントであり、Pythonで書かれていて、YAMLのマニュフェストに従ってDockerのグループを管理する。Google Compute Engine上で動作するコンテナを管理するプレビューバージョンはすでに公開されている。コンテナマニュフェストと起動時のコンテナ作成をサポートする。Debian 7を使っており、Dockerのランタイムとノードコンテナマネージャを搭載している。
Dockerはlmctfyの利点を生かすことができるはずだ。というのもDockerバージョン0.9よりLXCがない環境でもコンテナを動かせるようになっており、すでにlmctfyのドライバが開発されているからだ。