Docker社は,Dockerベースの分散アプリケーションをオーケストレーションするツールセットの,最初のバージョンをリリースした。ツールセットには,MachineとSwarm,Composeという3つのツールが含まれている。今回のリリースはまだ実用レベルではなく,コミュニティからのフィードバックを募集している,とDockerブログにはある。
ブログでは開発者に対して,開発環境,テスト環境,実行環境の間だけでなく,さまざまなクラウドプラットフォームやプライベートデータセンタへのデプロイに対して可搬性を持ち,ひとつのアプリケーションを複数のサービスに分割できるコンポーネント構成を採用した,分散アプリケーションの開発を提案している。Machine, Swarm, Dockerのベータリリースは,これらの問題にDockerのエコシステムを使って取り組む,その最初のステップだ。
Machineはローカルマシン,プライベートデータセンタ,あるいはクラウドプロバイダ上のDockerエンジンで,プロビジョニングを可能にする。さらに,デプロイされたローカルDockerクライアントを,エンジンコアとセキュアに(TLS経由で)通信するように設定することもできる。また,デプロイ対象のプラットフォームの抽象化により,ターゲット環境が何であるかに関わらず,何もない状態から,コマンドひとつでDockerエンジンをデプロイ可能だ。
Machineのベータリリースは,Amazon EC2やMicrosoft Azureなど,12の環境プロバイダをサポートする。さらに,Githubリポジトリ上の公開プルリクエストには,さらに9つのプロバイダのサポートが要望されている。Dockerのブログによると,Machineは現在,簡単なマシン管理(起動や停止),リモートコマンドの実行またはSSH経由のログイン,新バージョンがリリースされた場合のDocker Engineのアップグレードといった機能をサポートする。
SwarmはDockerコンテナのクラスタリングを提供するツールだ。複数のDocker Engineをプールして,単一の仮想Docker Engineとして公開する。標準的なDocker APIをサポートしているため,Dockerクライアントだけでなく,DokkuやShipyardといったサードパーティ製のツールも,複数ホスト対応へと透過的にスケールアップできる。
Swarmは外部インフラストラクチャに依存しない,標準的なDockerイメージを提供する。ローカルコマンドを実行してクラスタの生成とSwarmを起動することから始まり,Docker Engineを実行しているホストのクラスタに,コマンドを実行して参加する。リソースの管理や,必要ならばクラスタ内のコンテナの配置や移動を行うことも可能だ。
Swarmでは,MySQLコンテナはフラッシュストレージを備えたホスト上でのみ実行する,など,特定のコンテナに対する要件を設定することもできる。'アフィニティ(affinity)'を指定して,コンテナ間の関係を指定することも可能だ。例えば,2つのCPU占有率の大きいコンテナを,同じ物理ホストに配置しないように要求することができる。
Swarmが実用レベルに達するまでの追加機能として,いくつかの提案がされている。例えば,現在のSwarmには,ホストがフェールした場合にコンテナを再スケジュールする機能がない。アプリケーションをフォールトトレラントに実行するためには,これは必要な機能だ。また,現在のSwarmはシングルマスタモードで動作しているため,高可用性環境での動作には適していない。さらに,スケジューラなど,Swarmのコンポーネントを交換可能にする開発計画もある。
Composeは,Dockerを使ったマルチコンテナの分散アプリケーションの実行を定義する,オーケストレーションツールである。Docker内で開発環境を実行する既存ツールのFigをベースとして,アプリケーションのコンポーネントを単一ファイルで定義できるようにしている。コンポーネントとしてはコンテナ,コンテナ設定,リンク,ボリュームが指定可能だ。
Composeには,コンテナ化されたアプリケーションの開発ライフサイクル全般を管理したり,サービスの開始や終了,再構築を行うコマンドがある。実行中のサービスの状態確認やログ出力といった,簡単なコマンドをサーバ上で実行することも可能だ。Composeのロードマップにはテストやステージング,実行環境のサポート,Swarmとのインテグレーション,複数のチームにまたがるアプリケーションとイメージレジストリのサポート,開発コンテナの構築プロセス自動化に向けてのさらなる拡張などの項目が挙げられている。
ベータ版の発表記事はDockerブログにある。Machine,,Swarm,Composeの各ツールは,いずれもDockerのWebサイトからダウンロード可能だ。Docker社では,今回リリースしたツールのハイレベルな設計に対するフィードバックを,docker-devメーリングリストを通じて募集している。個々のプロジェクトに対するフィードバックは,それぞれのDockerツールのGithubリポジトリに宛てて送るとよいだろう。