クイック スタート:Docker CLI を使用してコンテナー インスタンスを Azure にデプロイする
サーバーレスの Docker コンテナーを Azure 内で簡単にすばやく実行するには、Azure Container Instances を使用します。 クラウドネイティブ アプリを開発していて、ローカル開発環境からクラウド デプロイにシームレスに切り替えたいときに、オンデマンドでコンテナー インスタンスにデプロイします。
このクイックスタートでは、ネイティブ Docker CLI コマンドを使用して Docker コンテナーをデプロイし、そのアプリケーションを Azure Container Instances で使用できるようにします。 この機能は、Docker と Azure 間の統合によって実現されます。 docker run
コマンドを実行して数秒後には、コンテナーで実行中のアプリケーションを参照できます。
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 --tenant-id "[tenant ID]"
Microsoft Entra ID プロパティを参照して、テナント ID を見つけます。
メッセージが表示されたら、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 に正常にデプロイされました。
コンテナー ログを取り込む
コンテナーまたはコンテナーで実行されているアプリケーションのトラブルシューティングを行うことが必要になった場合 (またはその出力を確認するだけの場合) は、コンテナー インスタンスのログを表示することから始めます。
たとえば、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 CLI、Azure PowerShell、Azure portal、Azure Resource Manager テンプレートを使用する他のクイックスタートを参照してください。
Docker Compose を使用して複数コンテナーのアプリケーションをローカルで定義して実行した後で、Azure Container Instances に切り替える場合は、チュートリアルに進みます。