Docker Desktop を使用した Azure Container Instances へのデプロイ

2020年6月25日 に投稿済み

Senior Program Manager, Azure Tools

このブログは、MacKenzie Olson (Program Manager、Azure Container Instances) との共著です。

本日、新しい Docker Desktop と Microsoft Azure の統合の最初のリリースについてお知らせします。先月、Microsoft と Docker がこのコラボレーションを発表しましたが、本日はお客様にそれをお知らせいたします。

Docker Desktop の新しいエッジ リリースでは、Docker と Microsoft Azure 間が統合されています。これにより、ネイティブの Docker コマンドを使用して、Azure Container Instances でお客様のアプリケーションをサーバーレス コンテナーとして実行できます。

Docker CLI を使用すると、Azure にすばやく簡単にサインインし、Azure サブスクリプションとリソース グループを使用して Container Instances コンテキストを作成した後、docker runを使用して Container Instances でお客様の単一コンテナー アプリケーションを実行することができます。また、docker-compose up を使用して、Docker Compose ファイルで定義されている Container Instances に複数コンテナー アプリケーションをデプロイすることもできます。

サーバーレス コンテナーを使用したコードからクラウド

Azure Container Instances は、1 つの Docker コンテナー、または Docker Compose ファイルで定義された複数のコンテナーで構成される 1 つのアプリケーションを実行するための優れたソリューションです。Container Instances では、インフラストラクチャをセットアップすることなくクラウドでコンテナーを実行したり、Azure Storage や GitHub リポジトリをボリュームとしてマウントするなどの機能を活用したりすることができます。Container Instances を使用すると、インフラストラクチャまたはプラットフォーム管理の負荷がなくなるため、クラウドでコンテナーをすばやく実行する必要があるユーザーに対応することができます。

Container Instances は、運用環境で同じワークロードを実行するための適切なターゲットでもあります。運用環境では、自動化された CI/CD フロー内で Docker コマンドを利用することをお勧めします。これにより、同じ Dockerfile ファイルと Docker Compose ファイルを GitHub Actions などのツールを使用して運用環境にデプロイできるため、構成ファイルを書き直す時間が少なく済みます。Container Instances には従量課金制の価格モデルもあります。つまり、コンテナーが実行されている場合にのみ、そして 1 秒あたりの CPU およびメモリの使用量に対してのみ課金されます。

例を使用して、新しい Docker Azure 統合を詳しく見てみましょう。キューから注文を継続的に取得し、必要な注文処理を実行する 1 つのワーカー コンテナーがあるとします。ネイティブの Docker コマンドを使用して Container Instances でこれを実行する手順を次に示します。

Docker CLI を使用して Azure Container Instances でコンテナーを作成および実行する

1 つの単一コンテナーを実行する

上のアニメーションからわかるように、新しい Docker CLI と Azure の統合により、Azure Container Instances で実行されているコンテナーを簡単に取得できるようになります。お客様は Docker CLI のみを使用して、多要素認証で Azure にログインし、バックエンドとして Container Instances を使用して Docker コンテキストを作成することができます。Container Instances コンテキストの詳細については、ドキュメントをご覧ください。

新しい Container Instances コンテキストを作成した後は、それを使用してお客様が既に使用していると思われる docker run、docker ps、docker rm などの標準の多くの Docker コマンドを使用して、Container Instances をターゲットにすることができます。シンプルな docker run <image> コマンドを実行すると、Docker Hub や Azure Container Registry などのレジストリに格納されているイメージを使用して、Container Instances のコンテナーが開始されます。他の一般的な Docker コマンドを実行して、実行中のコンテナーからのログを検査、添付、表示することができます。

Docker Compose を使用して複数コンテナー アプリをデプロイする

いくつかの関連するコンテナーで構成されるコンテナー化されたアプリケーションを多く目にします。サイドカー コンテナーは多くの場合、メイン コンテナーのログ記録または署名サービスを実行します。新しい Docker Azure 統合では、Docker Compose を使用してこれらの複数コンテナー アプリケーションを記述できます。

Container Instances コンテキストと Docker Compose ファイルは、お客様の CI/CD フローだけでなく、編集、ビルド、デバッグの内部ループの一部としても使用できます。これにより、docker-compose up および down コマンドを使用して、Container Instances で一度に複数のコンテナーを起動またはシャットダウンすることができます。

Visual Studio Code でさらに優れたエクスペリエンスを実現

Visual Studio Code Docker 拡張機能により、お客様のコンテナー、イメージ、コンテキストなどを開始、停止、管理するための統合されたエクスペリエンスが提供されます。拡張機能を使用すると、任意の言語の Dockerfiles および Docker Compose ファイルをスキャフォールディングできます。Node.js、Python、.NET の場合は、コンテナー内でお使いのアプリをワンクリックでデバッグすることができます。もちろん、Explorer もご利用いただけます。ここには、お使いの Docker オブジェクトの管理を Visual Studio Code 内部で直接簡単に行うことができる複数のパネルがあります。 

[コンテナー] パネルを使用すると、ログの一覧表示、開始、停止、検査、表示などを行うことができます。

 o	Docker Explorer の [コンテナー] パネルにすべてのコンテナーが表示され、それらを管理できます

[イメージ] パネルからは、お使いのイメージの一覧表示、プル、タグ付け、プッシュを行うことができます。

 o	Docker Explorer の [イメージ] パネルにすべてのイメージが表示され、それらを管理できます。
[レジストリ] パネルでは、Azure Container Registry と Docker Hub に接続して、クラウド内のお客様のイメージを表示し、管理することができます。Azure に直接デプロイすることもできます。

 o	Docker Explorer の [レジストリ] パネルには接続しているレジストリが表示され、イメージのプッシュとプルを許可することができます

[コンテキスト] パネルには、すべてのコンテキストが一覧表示され、それらをすばやく切り替えることができます。コンテキストを切り替えると、他のパネルが更新され、選択したコンテキストからの Docker オブジェクトが表示されます。Container Instances コンテキストは、Docker 拡張機能の次のリリースで完全にサポートされる予定です。

o	Docker Explorer の [コンテキスト] パネルにはすべてのコンテキストが表示され、それらを切り替えることができます

使用の開始

Docker Azure 統合の使用を開始するには、Docker Desktop エッジ リリースをインストールします。今すぐ、最新の Visual Studio Code Docker 拡張機能をご利用いただけます。Container Instances コンテキスト サポートは、まもなく追加されます。

Docker Desktop リリースの詳細については、Docker からのブログ記事をご覧ください。詳細については、Docker Container Instances コンテキストの使用に関するドキュメントをご覧ください。