演習: Azure Container Registry タスクを使用してコンテナー イメージをビルドして実行する
この演習では、ACR タスクを使用して以下のアクションを実行します。
- Azure コンテナー レジストリ (ACR) を作成します。
- Dockerfile からのイメージのビルドとプッシュ
- 結果を確認する
- ACR でイメージを実行する
前提条件
- アクティブなサブスクリプションがある Azure アカウント。 アカウントを取得済みでない場合は、https://azure.com/free から無料評価版にサインアップできます。
Azure にサインインして Cloud Shell を開始する
Azure portal にサインインして、Cloud Shell を開きます。
シェルが開いたら、Bash 環境を選択します。
Azure Container Registry を作成する
レジストリのリソース グループを作成します。 次のコマンドの
<myLocation>
を、自分の近くの場所に置き換えます。az group create --name az204-acr-rg --location <myLocation>
基本的なコンテナー レジストリを作成します。 レジストリの名前は Azure 内で一意にする必要があります。また、5 ~ 50 文字の英数字を含める必要があります。 次のコマンドの
<myContainerRegistry>
を一意の値に置き換えます。az acr create --resource-group az204-acr-rg \ --name <myContainerRegistry> --sku Basic
注意
このコマンドにより、"基本" レジストリが作成されます。これは、Azure Container Registry について学習する開発者向けにコスト最適化されたオプションです。
Dockerfile からのイメージのビルドとプッシュ
次に、Azure Container Registry を使用し、ローカルの Dockerfile に基づいてイメージのビルドとプッシュを行います。
ローカル ディレクトリを作成するか、ローカル ディレクトリに移動し、次のコマンドを使用して Dockerfile を作成します。 この Dockerfile には、Microsoft Container Registry でホストされる
hello-world
イメージを参照する 1 行のみが含まれています。echo FROM mcr.microsoft.com/hello-world > Dockerfile
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
結果を確認する
az acr repository list
コマンドを使用して、レジストリ内のリポジトリを一覧表示します。<myContainerRegistry>
を、先ほど使用した名前に置き換えます。az acr repository list --name <myContainerRegistry> --output table
Output:
Result ---------------- sample/hello-world
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 でイメージを実行する
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