AzureContainerRegistryとは
AzureContainerRegistry(以降ACRと呼ぶ)とはDockerイメージを管理するAzureリソース ≒ DockerHubである。
クラウドプラットフォームにAzureを採用するとき、DockerHubの代わりに使用する。
Dockerイメージとは
パブリックアクセスでの使用方法
ACRタスクを使用する。
az acr build --image sample/hello-world:v1 --registry myContainerRegistry008 --file Dockerfile .
以下はコマンドの詳細な説明です
- az acr build
- Azure CLIのコマンドで、Azure Container Registryを操作するためのサブコマンドです。
- --image sample/hello-world:v1
- Dockerイメージの名前とタグを指定する部分です。イメージ名はsample/hello-worldで、タグはv1です。
- --registry myContainerRegistry008
- ここでmyContainerRegistry008はAzure Container Registryの名前です。指定されたレジストリにイメージがプッシュされます。
- --file Dockerfile
- DockerイメージをビルドするためのDockerfileのパスを指定します。この例では、カレントディレクトリにある dockerfile という名前のファイルを使用しています。
- 最後の.
- ビルドに使用するソースコードのディレクトリを指定します。この例では、カレントディレクトリを使用しています。
このコマンドを実行すると、指定したDockerfileを使用してDockerイメージがビルドされ、指定されたAzure Container Registryにプッシュされます。プッシュされたイメージはsample/hello-world:v1としてAzure Container Registryに格納されます。
※プライベートアクセスではaz acr buildは使用できない
プライベートアクセスの設定方法 - セルフホステッドエージェント
- ACR展開先の仮想ネットワークを用意する
- ACRインスタンスを作成する。
- 価格オプション(sku)は
Premium
※プライベートアクセスに対応しているのはPremiumのみ - ネットワークをプライベートアクセスにして、プライベートエンドポイントを作成する
- 価格オプション(sku)は
- ACRと同じ仮想ネットワークに仮想マシンを作成する。
- 仮想マシンにDockerエンジンをインストールする
- DockerCLIを利用してacrへイメージをpushする
Azure Pipeline での ACR の使用方法
プライベートアクセスの設定方法 - ACRタスク
ACRタスクを作成し、ACRタスクにACRのRBACを割り当てる
※ACRタスクは信頼できるサービスに登録されている
az group create --name myResourceGroup --location japaneast
az acr create --resource-group myResourceGroup --name mycontainerregistry410 --sku Premium --public-network-enabled false
echo -e version: v1.1.0\\n\
steps:\\n\
- build: -t \$Registry/hello-world:tag1 https://github.com/Azure-Samples/acr-tasks.git#master -f curl.dockerfile\\n\
- push: ["\$Registry/hello-world:tag1"]\\n > helloworldtask.yaml
az acr task create --registry mycontainerregistry410 --name helloworldtask --context /dev/null --file helloworldtask.yaml --assign-identity --auth-mode None
principalID=$(az acr task show --name helloworldtask --registry mycontainerregistry410 --query identity.principalId --output tsv)
myregID=$(az acr show --name mycontainerregistry410 --query id --output tsv)
az role assignment create --assignee $principalID --scope $myregID --role acrpush
az acr task credential add --name helloworldtask --registry mycontainerregistry410 --login-server mycontainerregistry410.azurecr.io --use-identity [system]
az acr task run --name helloworldtask --registry mycontainerregistry410