演習: Azure Container Registry タスクを使用してコンテナー イメージをビルドして実行する

完了

この演習では、ACR タスクを使用して以下のアクションを実行します。

  • Azure コンテナー レジストリ (ACR) を作成します。
  • Dockerfile からのイメージのビルドとプッシュ
  • 結果を確認する
  • ACR でイメージを実行する

前提条件

  • アクティブなサブスクリプションがある Azure アカウント。 アカウントを取得済みでない場合は、https://azure.com/free から無料評価版にサインアップできます。

Azure にサインインして Cloud Shell を開始する

  1. Azure portal にサインインして、Cloud Shell を開きます。

    Cloud Shell 起動ボタンの位置。

  2. シェルが開いたら、Bash 環境を選択します。

    Bash 環境の選択。

Azure Container Registry を作成する

  1. レジストリのリソース グループを作成します。 次のコマンドの <myLocation> を、自分の近くの場所に置き換えます。

    az group create --name az204-acr-rg --location <myLocation>
    
  2. 基本的なコンテナー レジストリを作成します。 レジストリの名前は Azure 内で一意にする必要があります。また、5 ~ 50 文字の英数字を含める必要があります。 次のコマンドの <myContainerRegistry> を一意の値に置き換えます。

    az acr create --resource-group az204-acr-rg \
        --name <myContainerRegistry> --sku Basic
    

    注意

    このコマンドにより、"基本" レジストリが作成されます。これは、Azure Container Registry について学習する開発者向けにコスト最適化されたオプションです。

Dockerfile からのイメージのビルドとプッシュ

次に、Azure Container Registry を使用し、ローカルの Dockerfile に基づいてイメージのビルドとプッシュを行います。

  1. ローカル ディレクトリを作成するか、ローカル ディレクトリに移動し、次のコマンドを使用して Dockerfile を作成します。 この Dockerfile には、Microsoft Container Registry でホストされる hello-world イメージを参照する 1 行のみが含まれています。

    echo FROM mcr.microsoft.com/hello-world > Dockerfile
    
  2. az acr build コマンドを実行します。これは、イメージをビルドし、イメージが正常にビルドされたら、それをレジストリにプッシュします。 <myContainerRegistry> を、先ほど使用した名前に置き換えます。

    az acr build --image sample/hello-world:v1  \
        --registry <myContainerRegistry> \
        --file Dockerfile .
    

    次は前のコマンドの出力を短くしたサンプルです。最後の数行に最終結果があります。 repository フィールドに sample/hello-word イメージが記述されていることが確認できます。

    - image:
        registry: <myContainerRegistry>.azurecr.io
        repository: sample/hello-world
        tag: v1
        digest: sha256:92c7f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e899a
      runtime-dependency:
        registry: mcr.microsoft.com
        repository: hello-world
        tag: latest
        digest: sha256:92c7f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e899a
      git: {}
    
    
    Run ID: cf1 was successful after 11s
    

結果を確認する

  1. az acr repository list コマンドを使用して、レジストリ内のリポジトリを一覧表示します。 <myContainerRegistry> を、先ほど使用した名前に置き換えます。

    az acr repository list --name <myContainerRegistry> --output table
    

    Output:

    Result
    ----------------
    sample/hello-world
    
  2. az acr repository show-tags コマンドを使用して、sample/hello-world リポジトリのタグを一覧表示します。 <myContainerRegistry> を、先ほど使用した名前に置き換えます。

    az acr repository show-tags --name <myContainerRegistry> \
        --repository sample/hello-world --output table
    

    Output:

    Result
    --------
    v1
    

ACR でイメージを実行する

  1. sample/hello-world:v1 コマンドを使用して、コンテナー レジストリから az acr run コンテナー イメージを実行します。 次の例では、$Registry を使用して、コマンドを実行するレジストリを指定します。 <myContainerRegistry> を、先ほど使用した名前に置き換えます。

    az acr run --registry <myContainerRegistry> \
        --cmd '$Registry/sample/hello-world:v1' /dev/null
    

    この例の cmd パラメーターでは既定の構成のコンテナーを実行しますが、cmd では追加の docker run パラメーターまたはその他の docker コマンドもサポートされます。

    次の出力例は短縮されています。

    Packing source code into tar to upload...
    Uploading archived source code from '/tmp/run_archive_ebf74da7fcb04683867b129e2ccad5e1.tar.gz'...
    Sending context (1.855 KiB) to registry: mycontainerre...
    Queued a run with ID: cab
    Waiting for an agent...
    2019/03/19 19:01:53 Using acb_vol_60e9a538-b466-475f-9565-80c5b93eaa15 as the home volume
    2019/03/19 19:01:53 Creating Docker network: acb_default_network, driver: 'bridge'
    2019/03/19 19:01:53 Successfully set up Docker network: acb_default_network
    2019/03/19 19:01:53 Setting up Docker configuration...
    2019/03/19 19:01:54 Successfully set up Docker configuration
    2019/03/19 19:01:54 Logging in to registry: mycontainerregistry008.azurecr.io
    2019/03/19 19:01:55 Successfully logged into mycontainerregistry008.azurecr.io
    2019/03/19 19:01:55 Executing step ID: acb_step_0. Working directory: '', Network: 'acb_default_network'
    2019/03/19 19:01:55 Launching container with name: acb_step_0
    
    Hello from Docker!
    This message shows that your installation appears to be working correctly.
    
    2019/03/19 19:01:56 Successfully executed container: acb_step_0
    2019/03/19 19:01:56 Step ID: acb_step_0 marked as successful (elapsed time in seconds: 0.843801)
    
    Run ID: cab was successful after 6s
    

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

不要になったら、az group delete コマンドを使用して、リソース グループ、コンテナー レジストリ、そこに格納されているコンテナー イメージを削除します。

az group delete --name az204-acr-rg --no-wait