PR

 仮想化環境の一種であるコンテナは、従来の仮想化技術であるホスト型仮想化やハイパーバイザー型仮想化とは違い、ホストOSのカーネルを利用する。そのためオーバーヘッドが小さく、作成や起動が早い。

 さらに、コンテナエンジンとして米Dockerの「Docker」がデファクトスタンダードになっており、Azureに限らず、オンプレミス環境や他のクラウドにも、Docker形式のコンテナを動作させることができる。このポータビリティーの高さもメリットの一つだ。

 従来の仮想化技術を上回るメリットがあるため、コンテナに対する関心が高まっている。

 そこで本記事では、Azureのコンテナサービスを検証・解説する。

 Azureでは、コンテナ関連のマネージドサービスを主に二つ提供している。Web App for Containersと、AKS(Azure Kubernetes Service)だ。

 このほかにも「Azure Container Instances(ACI)」というサーバーレスのコンテナサービスがある。単体でも利用できるが、AKSと組み合わせることで、処理負荷が急増加したとき、素早くコンテナを配置して処理性能を高められる。ただし、2018年7月時点でまだ日本のリージョンでは利用できないため、本記事では取り扱わない。

 ユーザーは、Web App for ContainersやAKSを利用することで、オーバーヘッドが小さくポータビリティーの高いコンテナ基盤を導入し、同時に煩雑なインフラの運用管理の一部を自動化できる。

 Web App for ContainersとAKSの使い分けとしては、扱うコンテナの性質が基準になるだろう。Web App for Containersは、独立性が高く1個で動作するコンテナのデプロイに向く。AKSは、多機能なオーケストレーターKubernetesを備えており、関連性の高い複数のコンテナをまとめて管理(オーケストレーション)する場合に向く。

 以下で二つのサービスを順に解説する。

Web App for Containers

 Web App for Containersは、Webアプリケーション実行基盤サービス「App Service Web Apps」上でコンテナを動作させるPaaSである(編集部注:App Service Web Appsについては2018年4月号サービス評価「Azure App Service Web Apps」を参照)。

 Web App for Containersでは、Dockerイメージを指定するだけで、あとは自動的にDockerイメージの取り込み(pull)や起動(run)を行う。Dockerを動かすホストOS以下のレイヤーについて、ユーザーは意識する必要がない。

 Dockerイメージのダウンロード元となるリポジトリーは、Azureの専用サービス「Azure Container Registry」、Docker Hub、プライベートレジストリーから選択する。これは後述のAKSも同じである。

 Dockerイメージは一般にサイズが大きいので、初回のpullには長い時間が掛かる。2回目以降は内部的なキャッシュを使用することにより高速化される。

 Azure Container Registryを利用すると、Azureのバックボーンのネットワークを利用するので、Docker Hubに比べて非常に早くpullが完了する。さらに、継続的なデプロイをオンにすると、対象のDockerイメージが登録(push)されるたびに、Web App for Containersが最新のDockerイメージを取得して再起動を行う。

 Dockerでは、アプリケーションの処理性能はホストOSが動くマシンに依存する。Web App for Containersの場合、Web AppsのApp Service Planで選択した「Basic」「Standard」「Premium v1」「Premium v2」といったスペックによって決まる。

 App Service Web Appsでは、基本的にいつでもApp Service Planのスペックを変更できる。Web App for Containersでも同様に、スペックを変更することが可能だ。

 Web App for ContainersにWebアプリケーションをデプロイし、外部からアクセスするには、ポートフォワードの設定をする。Web App for Containersのアプリケーションの設定に「WebSITES_PORT」を追加し、Dockerが使用するポートを指定する。

 バインドするポートは今のところ1個しか設定できない。そのため原則として、1コンテナに対して1アプリケーション(プロセス)を動作させることになる。

 Web App for Containersには、2018年7月時点で大きな制約事項が二つある。

 一つは、無料の「Freeプラン」、有料プランでは最も低価格の「Sharedプラン」を選択できないこと。もう一つは、Azure仮想ネットワークの統合(Web App for Containersから、インターネットを介さず仮想ネットワーク上にあるVMなどにアクセスすること)、Active Directory認証、その他サードパーティーによる認証を利用できないことだ。Web App for Containersを導入する際には、これらの点も合わせて留意する必要がある。