クイック スタート:Docker CLI を使用してコンテナー インスタンスを Azure にデプロイする

サーバーレスの Docker コンテナーを Azure 内で簡単にすばやく実行するには、Azure Container Instances を使用します。 クラウドネイティブ アプリを開発していて、ローカル開発環境からクラウド デプロイにシームレスに切り替えたいときに、オンデマンドでコンテナー インスタンスにデプロイします。

このクイックスタートでは、ネイティブ Docker CLI コマンドを使用して Docker コンテナーをデプロイし、そのアプリケーションを Azure Container Instances で使用できるようにします。 この機能は、Docker と Azure 間の統合によって実現されます。 docker run コマンドを実行して数秒後には、コンテナーで実行中のアプリケーションを参照できます。

Azure Container Instances を使用してデプロイされたアプリのブラウザーでの表示

Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。

このクイックスタートでは、Windows または macOS で利用可能な、Docker Desktop バージョン 2.3.0.5 以降が必要です。 または、Docker ACI Integration CLI for Linux をインストールします。

重要

Azure Container Instances の一部の機能はサポートされていません。 aci-integration-beta GitHub リポジトリでイシューを作成して、Docker と Azure の統合に関するフィードバックを提供してください。

Azure コンテキストを作成する

Docker コマンドを使用して Azure Container Instances でコンテナーを実行するには、最初に Azure にログインします。

docker login azure

メッセージが表示されたら、Azure の資格情報を入力または選択します。

docker context create aci を実行して、ACI コンテキストを作成します。 このコンテキストにより、Azure サブスクリプションとリソース グループに Docker が関連付けられて、コンテナー インスタンスを作成、管理できるようになります。 たとえば、myacicontext というコンテキストを作成するには、次のように入力します。

docker context create aci myacicontext

プロンプトが表示されたら、Azure サブスクリプション ID を選択してから、既存のリソース グループを選択するか、新しいリソース グループを作成します。 新しいリソース グループを選択すると、システムによって生成された名前で作成されます。 Azure のコンテナー インスタンスは、すべての Azure リソースと同様に、リソース グループにデプロイする必要があります。 リソース グループを使用すると、関連する Azure リソースを整理して管理できます。

docker context ls を実行して、Docker コンテキストに ACI コンテキストを追加したことを確認します。

docker context ls

コンテナーを作成する

Docker コンテキストを作成した後、Azure でコンテナーを作成できます。 このクイック スタートでは、パブリックの mcr.microsoft.com/azuredocs/aci-helloworld イメージを使用します。 このイメージには、静的な HTML ページを返す、Node.js で作成された小さな Web アプリがパッケージされています。

まず、ACI コンテキストに変更します。 以降のすべての Docker コマンドは、このコンテキストで実行されます。

docker context use myacicontext

次の docker run コマンドを実行し、インターネットに公開されているポート 80 を使用して Azure コンテナー インスタンスを作成します。

docker run -p 80:80 mcr.microsoft.com/azuredocs/aci-helloworld

正常に行われたデプロイのサンプル出力:

[+] Running 2/2
 ⠿ hungry-kirch            Created                                                                               5.1s
 ⠿ single--container--aci  Done                                                                                 11.3s
hungry-kirch

docker ps を実行して、パブリック IP アドレスなど、実行中のコンテナーについての詳細を取得します。

docker ps

サンプル出力では、パブリック IP アドレス (この例では 52.230.225.232) が示されています。

CONTAINER ID        IMAGE                                        COMMAND             STATUS              PORTS
hungry-kirch        mcr.microsoft.com/azuredocs/aci-helloworld                       Running             52.230.225.232:80->80/tcp

次に、ブラウザーでその IP アドレスにアクセスします。 次のような Web ページが表示されたら成功です。 Docker コンテナーで実行されているアプリケーションが Azure に正常にデプロイされました。

Azure Container Instances を使用してデプロイされたアプリのブラウザーでの表示

コンテナー ログを取り込む

コンテナーまたはコンテナーで実行されているアプリケーションのトラブルシューティングを行うことが必要になった場合 (またはその出力を確認するだけの場合) は、コンテナー インスタンスのログを表示することから始めます。

たとえば、docker logs コマンドを実行して、ACI コンテキストの kirch コンテナーのログを表示します。

docker logs hungry-kirch

出力はコンテナーのログを表示し、ブラウザーでアプリケーションを表示したときに生成された HTTP GET 要求が表示されます。

listening on port 80
::ffff:10.240.255.55 - - [07/Jul/2020:17:43:53 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
::ffff:10.240.255.55 - - [07/Jul/2020:17:44:36 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
::ffff:10.240.255.55 - - [07/Jul/2020:17:44:36 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"

リソースをクリーンアップする

コンテナーを使い終えたら、docker rm を実行して削除します。 このコマンドを実行すると、Azure コンテナー インスタンスが停止されて、削除されます。

docker rm hungry-kirch

次のステップ

このクイックスタートでは、Docker と Azure の統合を使用して、パブリック イメージから Azure コンテナー インスタンスを作成しました。 統合シナリオの詳細については、Docker のドキュメントを参照してください。

また、コンテナー、イメージ、コンテキストを開発、実行、管理するための統合エクスペリエンスとして、Visual Studio Code 用の Docker 拡張機能を使用することもできます。

Azure ツールを使用してコンテナー インスタンスを作成および管理する方法については、Azure CLIAzure PowerShellAzure portalAzure Resource Manager テンプレートを使用する他のクイックスタートを参照してください。

Docker Compose を使用して複数コンテナーのアプリケーションをローカルで定義して実行した後で、Azure Container Instances に切り替える場合は、チュートリアルに進みます。