演習 - Azure コンテナー インスタンスに Docker イメージをデプロイする

完了

Azure コンテナー インスタンスでは、Azure で Docker イメージを実行することができます。

先ほどの演習で、Web アプリをローカルの Docker イメージとしてパッケージ化し、テストしました。 ここでは、その演習の出力を使用し、Web アプリケーションをグローバルに使用できるようにします。 この可用性を実現するには、Azure コンテナー インスタンスとしてイメージを実行します。

この演習では、Web アプリのイメージをリビルドし、それを Azure Container Registry にアップロードします。 イメージを実行するには、Azure コンテナー インスタンス サービスを使用します。

重要

この演習を行うには、独自の Azure サブスクリプションが必要です。また、料金が発生することがあります。 Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。

コンテナー レジストリを作成する

  1. 自分の Azure サブスクリプションを使用して、Azure portal にサインインします。

  2. リソース メニューで、または [ホーム] ページから、[リソースの作成] を選択します。 [リソースの作成] ウィンドウが表示されます。

  3. メニューで、[コンテナー][コンテナー レジストリ] の順に選択します。

    Screenshot that shows Create a resource with Container Registry.

    [コンテナー レジストリの作成] ペインが表示されます。

  4. [基本] タブで、各設定に対して次の値を入力します。

    設定
    プロジェクトの詳細
    サブスクリプション リソースの作成と管理が許可されている、ご自分の Azure サブスクリプションを選択します。
    Resource group [新規リソース グループの作成] を選択し、learn-deploy-container-aci-rg という名前の新しいリソース グループを入力します。 選択した名前を忘れないでください。このモジュールの残りの演習で使用します。 また、モジュールの操作が完了したら、このリソースをクリーンアップすることを忘れないでください。
    インスタンスの詳細
    レジストリ名 任意の名前を選択します。 レジストリの名前は Azure 内で一意にする必要があります。また、5 ~ 50 文字の英数字を含める必要があります。
    場所 近くの場所を選択します。
    SKU Standard
  5. [Review + create](レビュー + 作成) を選択します。 [検証に成功しました] という通知が表示されたら、[作成] を選択します。 コンテナー レジストリがデプロイされるまで待ってから、次に進みます。

  6. [リソースに移動] を選択します。 [コンテナー レジストリ] ペインには、コンテナー レジストリに関する基本情報が表示されます。

  7. リソース メニューの [設定] で、[アクセス キー] を選択します。 コンテナー レジストリの [アクセス キー] ペインが表示されます。

  8. 管理者ユーザー設定が無効になっている場合は、スライダーをオンにして、管理者ユーザー アクセス キーを有効にします。 ご自分のコンテナー レジストリのユーザー名とパスワードが表示されます。

  9. ご自分のコンテナー レジストリのレジストリ名ログイン サーバーユーザー名、およびパスワードをメモしておきます。

    Note

    この演習では、イメージをアップロードしてレジストリをテストできるように、管理者アカウントのアクセスを有効にします。 運用環境では、管理者ユーザー アカウントのアクセスを無効にし、レジストリが想定どおりに動作していることを確認したらすぐに Microsoft Entra ID Protection を使用することが重要です。

    Screenshot of the Access keys details.

Azure Container Registry にホテル予約システム アプリのイメージをアップロードする

  1. ローカルのコマンド プロンプトで、次のコマンドを実行し、<registry-name> をご自分のコンテナー レジストリの名前に置き換えて、現在の reservationsystem イメージにご自分のレジストリの名前でタグを付けます。

    docker tag reservationsystem:latest <registry-name>.azurecr.io/reservationsystem:latest
    
  2. docker image ls コマンドを実行し、イメージに正しくタグが付けられたことを確認します。

    docker image ls
    

    次のような出力結果が表示されます。

    REPOSITORY                                    TAG                 IMAGE ID            CREATED             SIZE
    reservationsystem                             latest              a56281e7038f        4 minutes ago       1.76GB
    <registry-name>.azurecr.io/reservationsystem  latest              a56281e7038f        4 minutes ago       1.76GB
    
  3. コマンド プロンプトで、Azure Container Registry にサインインします。 docker login コマンドを使用して、先ほどメモしたレジストリのログイン サーバーを指定します。 プロンプトが表示されたら、ご自分のアクセス キーのユーザー名とパスワードを入力します。

    docker login <login-server>
    

    Note

    アプリケーションが Microsoft Entra ID に登録されていないというエラー応答がデーモンから返される場合があります。 この演習で既に説明したように、デプロイをテストするために、管理者ユーザー アクセス キーを有効にしました。

  4. 次のコマンドを入力して、<registry-name> をご自分のレジストリ名に置き換えて、Azure Container Registry のレジストリにイメージをアップロードします。

    docker push <registry-name>.azurecr.io/reservationsystem:latest
    

    アップロードが完了するまで待ちます。 このプロセスでは、イメージのすべてのオブジェクトがリポジトリにプッシュされるまでに数分かかります。 Waiting > Preparing > Pushing > Pushed と、各プロジェクトが進んでいく様子を観察することができます。

レジストリのコンテンツを確認する

この演習の残りの部分では、Azure portal に戻ります。

  1. Azure ポータルで、コンテナー レジストリに戻ります。

  2. リソース メニューの [サービス][リポジトリ] を選択します。 コンテナー レジストリの [リポジトリ] ペインが表示されます。

  3. reservationsystem リポジトリが表示されていることを確認します。 reservationsystem リポジトリを選択し、そのリポジトリに latest タグが付いたイメージが含まれていることを確認します。

    Screenshot showing the repository and tagged reservation system container image in the registry.

Azure コンテナー インスタンスを使用してイメージを読み込んで実行する

  1. Azure Portal で、 [リソースの作成] を選択します。 [リソースの作成] ウィンドウが表示されます。

  2. リソース メニューで、[コンテナー][コンテナー インスタンス] の順に選択します。

    Screenshot showing Container Instances.

    [コンテナー インスタンスの作成] ペインが表示されます。

    コンテナー インスタンスを構成するには、いくつかの手順を実行します。 まず、リソース グループの情報とコンテナーの詳細を設定します。 次に、コンテナーのネットワーク オプションを構成し、ポリシーを再起動します。

  3. [基本] タブで、各設定に対して次の値を入力します。

    設定
    プロジェクトの詳細
    サブスクリプション リソースの作成と管理が許可されている、既定の Azure サブスクリプションを選択します
    Resource group 既存のリソース グループ learn-deploy-container-aci-rg を再利用します
    コンテナーの詳細
    コンテナー名 hotelsysteminstance
    リージョン 既定の場所を使用します
    イメージのソース Docker Hub またはその他のレジストリ
    イメージの種類 非公開
    Image <registry-name>.azurecr.io/reservationsystem:latest
    イメージ レジストリのログイン サーバー レジストリのログイン サーバー名を入力します
    イメージ レジストリのユーザー名 レジストリのユーザー名を入力します
    イメージ レジストリのパスワード レジストリのパスワードを入力します
    OS の種類 Linux
    サイズ 1 vCPU、1.5 Gib メモリ、0 GPU に設定された既定の "サイズ" のままにします
  4. [次へ: ネットワーク] を選択します。

  5. [ネットワーク] タブで、各設定に対して次の値を入力します。

    設定
    ネットワークの種類 パブリック
    DNS 名ラベル 一意の名前を選択します。これは、コンテナーの URL の一部として使用されます。
    ポート
    ポート 80
    ポートのプロトコル TCP
  6. [次: 詳細] を選択します。

  7. [詳細] タブで、各設定に対して次の値を入力します。

    設定
    再起動ポリシー 常時
    環境変数 "すべての設定を空白のままにする"
    コマンドのオーバーライド 空白のまま
  8. [Review + create](レビュー + 作成) を選択します。 検証が完了するまで待機し、必要に応じてエラーを修正します。

  9. [作成] を選択します

  10. コンテナー インスタンスが作成されたら、[リソースに移動] を選択します。 コンテナー インスタンス ペインが表示されます。

  11. [概要] ペインで、コンテナー インスタンスの完全修飾ドメイン名 (FQDN) を見つけます。

    Screenshot that shows the New pane in Azure portal showing the Container properties with the FQDN highlighted.

  12. Web ブラウザーを使用して、URL http://FQDN/api/reservations/1 に移動します。ここで、FQDN をお使いのコンテナー インスタンスの完全修飾ドメイン名に置き換えます。 たとえば、上のスクリーンショットで表示されている FQDN を使用すると、次のようになります。

    http://hotel.southcentralus.azurecontainer.io/api/reservations/1
    

    Web アプリは、予約 1 の詳細を含む JSON オブジェクトを使用して応答します。

おめでとうございます。 Azure Container Registry に Docker イメージをアップロードし、Azure コンテナー インスタンス サービスを使用してイメージを実行しました。