RedHatのソフトウェア技術者であるDaniel Lobato氏が,Dockerコンテナ管理の新ツールであるForemanについて,また,UbuntuサーバチームのSerge Hallyn氏は,Linuxコンテナデーモンの新たなLXDプロジェクトについて,それぞれFOSDEMの仮想化関連技術者セミナで講演した。
ForemanによるDockerコンテナのプロビジョニングと管理
Daniel Lobato氏が講演で取り上げたのは,オープンソースのライフサイクル管理ツールであるForemanである。Foremanは,物理サーバや仮想サーバのシステム管理者を対象とした,繰り返し作業やサーバ設定を自動化するツールで,MozillaやBBC,Cernなどのプロジェクトで使用されている。
Foremanは,物理ホスト,仮想マシンなどのシステムインフラストラクチャの管理を集中化する。現在ではコンテナや,PuppetあるいはChefとの統合によってコンフィギュレーションの管理も対象としている。
ForemanにはKatelloとPulpが統合されている。Pulpのバージョン2.5以降にはDockerのリポジトリ管理機能が含まれているので,例えば開発と実運用といったように,複数の環境にわたるDockerイメージのステージングが可能である。提供されているREST APIは,ベアメタルのみでなく,さまざまな仮想マシンやクラウド環境(GCE, EC2, OpenStack, ...)のマシンにも使用可能だ。オペレーションはWeb UI,またはAPIを経由して行う。
Foremanは,コンテナのプロビジョンと管理を集中的に実行する場を提供するだけでなく,仮想サーバと物理サーバを組み合わせた環境の管理も行う。プロビジョニングは環境やオペレーティングシステムに応じて,iPXE, Cloud-init, あるいはユーザデータで実行することができる。さらに今回,Dockerfileで行うことも可能になった。
RBAC(Role Based Access Control)により,コンテナの表示や生成などの操作に対して,例えばデータセンタ内といったように,ロケーションを基準とした別々のロールを使用することができる。この機能の目的は,Dockerホストのセキュリティを処理することにある。そのホストに対するアクセス権を所持するユーザは,実行中のすべてのコンテナにアクセス可能になるため,Foremanでは,コンテナへのアクセスを管理する認証レイヤを独自に提供しているのだ。
Foremanは,Docker上に次のものを実現する。
- リソースのセキュリティ処理。
- レジストリ管理。
- マルチコンテナ操作。
- モニタリング。
Foremanプラグインによる機能の追加も可能で,Kubernetesによるオーケストレーションなどが予定されている。
LXD:コンテナハイパーバイザ
Ubuntuサーバチームに所属するアップストリームのLXC開発者であるSerge Hallyn氏が,新しいLDXプロジェクトであるLinuxコンテナデーモンについて講演した。
LXCは,Linuxカーネルにオペレーティングシステムレベルの仮想機能を追加して仮想プライベートサーバを実装したLinux VServer,さらにはLinux用のコンテナベースの仮想化であるOpenVZといった実装が,カーネルに受け入れられなかった後,新たにスクラッチから設計されたものだ。
LXDは,そのLXCコミュニティの下で始まったプロジェクトで,LXCを基盤として,LXCのGo言語APIバインディングを使用する。LXDはUbuntu上で動作し,その他のLinuxのインスタンスを起動することができる。
LXDは,ハイパーバイザ的な処理を行うデーモン,システムコンテナを管理するREST API,コンテナイメージを管理するフレームワークで構成され,ユーザネームスペース,cgroup,AppArmor, seccompなどによるセキュリティをデフォルトで提供する。
基本的なコンテナ管理を備えたLXD 0.1が先頃リリースされた。次のバージョンでは,ライブマイグレーション,既存のイメージの格納,ローカルイメージサーバ,長時間を要するオペレーション用のイベントインターフェースといったものが計画されている。