(非推奨) Azure Container Service を使用した Docker コンテナー ホスティング ソリューションの概要

警告

Azure Container Service (ACS) は非推奨となっています。ACS に新しい機能が追加されることはありません。API、ポータルのエクスペリエンス、CLI コマンド、ドキュメントはすべて非推奨としてマークされます。

詳細については、Azure.com で Azure Container Service の非推奨化に関するお知らせを参照してください。

次のいずれかの Azure Marketplace ソリューションをデプロイすることをお勧めします。

Kubernetes を使用する場合は、Azure Kubernetes Service に関するページを参照してください。

Azure Container Service を使用すると、コンテナー化されたアプリケーションを実行するように事前構成されている仮想マシンのクラスターを簡単に作成、構成および管理できます。 Azure Container Service では、評判のよいオープンソースのスケジューリングおよびオーケストレーション ツールの最適化された構成を使用します。 これにより、既存のスキルを使用して、または増え続けている大規模な専門家コミュニティの知恵に頼って、Microsoft Azure にコンテナーベースのアプリケーションをデプロイおよび管理できます。

Azure Container Service では、Azure 上の複数のホストのコンテナー化されたアプリケーションを管理できます。

Azure Container Service では、Docker コンテナー形式を活用し、アプリケーション コンテナーの完全な移植性を保証しています。 また、このようなアプリケーションを何千、何万ものコンテナーに拡張できるように、ユーザーの選択に応じて Marathon と DC/OS、Docker Swarm、または Kubernetes もサポートしています。

Azure Container Service を使用することで、オーケストレーション レイヤーでの移植性も含め、アプリケーションの移植性を維持しながら、エンタープライズ レベルの Azure の機能を活用することができます。

Azure Container Service の使用

Azure Container Service は、現在ユーザーに人気のあるオープンソースのツールとテクノロジを使用することで、コンテナー ホスト環境を提供することを目的としています。 これに対応するために、選択したオーケストレーター (DC/OS、Docker Swarm、または Kubernetes) 用の標準 API エンドポイントを公開しています。 これらのエンドポイントを使用することにより、それらのエンドポイントと通信できる任意のソフトウェアを活用できます。 たとえば、Docker Swarm エンドポイントの場合、Docker コマンド ライン インターフェイス (CLI) を使用することができます。 DC/OS の場合は、DCOS CLI を選択できます。 Kubernetes の場合は、kubectl を選択できます。

Azure Container Service を使用した Docker クラスターの作成

Azure Container Service を使用するには、ポータル経由か (Marketplace で Azure Container Service を検索)、Azure Resource Manager テンプレート (Docker SwarmDC/OS、または Kubernetes) を使用するか、Azure CLI を使用して、Azure Container Service クラスターをデプロイします。 提供されたクイック スタート テンプレートを変更して、Azure の追加または高度な構成を含めることができます。 詳細については、Azure Container Service クラスターのデプロイに関するページをご覧ください。

アプリケーションのデプロイ

Azure Container Service では、オーケストレーション用に Docker Swarm、DC/OS、または Kubernetes を選択できます。 アプリケーションをデプロイする方法は、選択したオーケストレーターによって異なります。

DC/OS の使用

DC/OS は、Apache Mesos 分散システムのカーネルをベースとする分散オペレーティング システムです。 Apache Mesos は、Apache Software Foundation の下で管理されており、そのユーザーや協力会社として 大手 IT 企業 が名前を連ねています。

DC/OS 用に構成された Azure Container Service。エージェントとマスターが示されている。

DC/OS と Apache Mesos の特筆すべき機能を以下に示します。

  • 実証済みのスケーラビリティ
  • Apache ZooKeeper を使用したフォールト トレラントのレプリケートされたプライマリとセカンダリ
  • Docker 形式コンテナーのサポート
  • Linux コンテナーを使用したタスク間のネイティブな分離
  • (メモリ、CPU、ディスクおよびポートの) マルチリソース スケジューリング
  • 新しい並列アプリケーションを開発するための Java、Python、および C++ API
  • クラスターの状態を参照するための Web UI

Azure Container Service 上で実行される DC/OS には、ワークロードをスケジューリングするための Marathon オーケストレーション プラットフォームが既定で備わっています。 ただし、ACS の DC/OS のデプロイには、サービスに追加できる Mesosphere Universe サービスが含まれ、 Spark、Hadoop、Cassandra などがこれに含まれます。

Azure コンテナー サービスの DC/OS Universe

Marathon の使用

Marathon は、クラスター全体の cgroups (または Azure Container Service の場合は Docker 形式コンテナー) のサービスを、初期化および制御するシステムです。 Marathon には、アプリケーションをデプロイできる Web UI があります。 これには、http://DNS_PREFIX.REGION.cloudapp.azure.com のような URL でアクセスできます。 DNS_PREFIX と REGION はどちらもデプロイ時に定義されます。 独自の DNS 名を指定することも可能です。 Marathon Web UI を使用したコンテナーの実行の詳細については、Marathon Web UI での DC/OS コンテナー管理に関するページをご覧ください。

Marathon アプリケーションの一覧

Marathon との通信には、REST API を使用することも可能です。 各ツールで利用可能なクライアント ライブラリが多数あります。 さまざまな言語に対応するだけでなく、任意の言語で HTTP プロトコルを使用することもできます。 さらに、Marathon は、多数の人気の DevOps ツールによってもサポートされています。 このため、Azure Container Service クラスターで作業する際に、オペレーション チームに最大限の柔軟性を提供します。 Marathon REST API を使用したコンテナーの実行の詳細については、「Marathon REST API を使用した DC/OS コンテナー管理」を参照してください。

Docker Swarm の使用

Docker Swarm は、Docker のネイティブ クラスタリングを提供しています。 Docker Swarm には標準の Docker API があるため、Docker デーモンと既に通信するすべてのツールは Swarm を使用し、Azure Container Service の複数のホストに透過的にスケーリングできます。

Swarm を使用するように構成された Azure Container Service。

注意

Azure Container Service の Docker Swarm オーケストレーターは、従来のスタンドアロンの Swarm を使用します。 現時点では、(Docker 1.12 以降の) 統合された Swarm モードは、Azure Container Service でサポートされているオーケストレーターではありません。 Azure で Swarm モードのクラスターをデプロイする場合は、オープンソースの ACS Engine、コミュニティ提供のクイックスタート テンプレート、または Azure Marketplace の Docker ソリューションを使用してください。

Swarm クラスターでコンテナーを管理するためにサポートされているツールには、(これらに限定はされていませんが) 以下があります。

  • Dokku
  • Docker CLI および Docker Compose
  • Krane
  • Jenkins

Kubernetes の使用

Kubernetes は、一般的な運用グレードのオープン ソース コンテナー オーケストレーター ツールです。 この Kubernetes により、コンテナー化されたアプリケーションのデプロイ、スケーリング、および管理が自動化されます。 Kubernetes はオープン ソースのソリューションであり、オープン ソース コミュニティによって推進されているため、Azure Container Service 上でシームレスに実行され、Azure Container Service 上でコンテナーを大規模にデプロイするために使用できます。

Kubernetes を使用するように構成された Azure Container Service。

Kubernetes には、次に示す豊富な機能セットが用意されています。

  • 水平スケーリング
  • サービス検出と負荷分散
  • シークレットと構成管理
  • API ベースの自動化されたロールアウトとロールバック
  • 自己復旧

ビデオ

Azure Container Service の概要 (101):

Azure Container Service を使用したアプリケーションの構築 (Build 2016)

次のステップ

ポータルまたは Azure CLI を使用して、コンテナー サービス クラスターをデプロイする。