Azure Container Registry CLI
GitHubOfficialFirst committed by AClerboisDistributed by GitHub
- Skill
- Tool integration
- Cloud and DevOps
- MIT
- Low risk
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
The azure-container-registry-cli skill provides a comprehensive interface for interacting with Azure Container Registry (ACR) via the Azure CLI. It covers the full lifecycle of container registries, including creation, authentication, image management, cloud-based builds, and automated tasks. The skill emphasizes server-side operations like importing images and cloud builds to reduce local dependencies and improve efficiency in CI/CD pipelines.
What it does
- Create and manage Azure Container Registry instances and configurations.
- Authenticate local environments or services against registries.
- Execute cloud-based container image builds without requiring a local daemon.
- Automate image workflows using ACR Tasks with git, base-image, or timer triggers.
- Perform server-side image operations such as importing and purging.
- Manage registry security through RBAC roles, repository-scoped tokens, and network rules.
When to use it
- When you need to build, push, or import container images directly within Azure.
- When setting up automated image rebuilds or multi-step tasks.
- When configuring registry access for CI/CD systems or Azure compute services.
- When managing registry lifecycle, geo-replication, or network security settings.
- When diagnosing connectivity or quota issues with a registry.
Advantages
- Reduces local resource usage by offloading builds and image transfers to the cloud.
- Integrates natively with Azure identity and access management systems.
- Supports complex automation workflows through ACR Tasks.
- Provides server-side tools for efficient image maintenance and cleanup.
Usage examples
- “How do I build an image in the cloud using my current directory?”
- The agent will provide the az acr build command, specifying the registry and image name to trigger a cloud-based build.
- “How can I grant a service principal pull access to my registry?”
- The agent will explain how to use az role assignment create with the AcrPull role scoped to the registry ID.
- “Show me how to list all tags for a specific repository.”
- The agent will provide the az acr repository show-tags command to display tags for the requested repository.
- “How do I set up a nightly rebuild task for my application?”
- The agent will guide you through creating an ACR task and adding a timer trigger using az acr task timer add.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/github/azure-container-registry-cli/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip azure-container-registry-cli.zip -d .agents/skills
Documentation by AClerbois
Azure Container Registry CLI
Manage Azure Container Registry (ACR) resources using the az acr command group of the Azure CLI.
CLI: az acr ships with core Azure CLI — no extension required (the acrtransfer extension is only needed for export/import pipelines).
Prerequisites
# Install Azure CLI
brew install azure-cli # macOS
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash # Linux
winget install Microsoft.AzureCLI # Windows
# Sign in and select subscription
az login
az account set --subscription {subscription-id}Quick Start
# Create a registry (SKU: Basic | Standard | Premium)
az acr create --resource-group {rg} --name {registry} --sku Standard
# Authenticate Docker/Podman against the registry
az acr login --name {registry}
# Build and push in the cloud — no local Docker needed
az acr build --registry {registry} --image app:v1 .
# Copy an image from another registry without pull/push
az acr import --name {registry} --source mcr.microsoft.com/hello-world:latest
# List repositories and tags
az acr repository list --name {registry} --output table
az acr repository show-tags --name {registry} --repository app --orderby time_desc
# Diagnose registry connectivity and configuration
az acr check-health --name {registry} --yesKey Principles
Prefer
az acr build/ ACR Tasks over localdocker build+docker push: builds run in Azure, work without a local daemon, and integrate with triggers.Prefer
az acr importto move images between registries: it is server-side, faster, and requires no local storage.Never enable the admin user for production — use Microsoft Entra identities (RBAC roles
AcrPull/AcrPush, orContainer Registry Repository Reader/Writeron ABAC-enabled registries), repository-scoped tokens, or managed identities.Premium-only features: geo-replication, private endpoints, retention policies, connected registries, agent pools. (Repository-scoped tokens work in all tiers; zone redundancy is automatic in all tiers in supported regions.)
CLI Structure
az acr
├── create / delete / list / show / update # Registry lifecycle
├── login # Docker credential helper (or --expose-token)
├── check-health / check-name / show-usage # Diagnostics & quota
├── build # Cloud image build (quick task)
├── run # Run a command / multi-step task once
├── task # ACR Tasks (triggers, timers, logs, runs)
├── agentpool # Dedicated task agent pools (Premium)
├── import # Server-side image copy into the registry
├── repository # List/show/delete/untag repos & tags, lock images
├── manifest # Manifest metadata, delete, OCI referrers
├── credential # Admin user credentials (avoid in production)
├── token / scope-map # Repository-scoped tokens (Premium)
├── replication # Geo-replication (Premium)
├── network-rule # IP network rules
├── private-endpoint-connection # Private Link approvals
├── config # content-trust, retention, soft-delete, ...
├── cache / credential-set # Artifact cache (pull-through cache) rules
├── webhook # Push/delete event webhooks
├── connected-registry # On-premises / IoT connected registries
└── export-pipeline / import-pipeline / pipeline-run # acrtransfer extensionReference Files
Read the relevant reference file based on the user's task. Each file contains complete command syntax and examples for its domain.
| File | When to read | Covers |
|---|---|---|
references/auth-and-security.md | Login failures, permissions, CI/CD or AKS pull access | az acr login (incl. --expose-token), Entra RBAC roles, service principals, managed identities, --attach-acr for AKS, repository-scoped tokens & scope maps, admin user, content trust |
references/build-and-tasks.md | Building images in Azure, automation, CI triggers | az acr build, az acr run, multi-step task YAML, az acr task (git/base-image/timer triggers, logs, runs), agent pools |
references/images-and-artifacts.md | Managing repos, tags, cleanup, storage costs | az acr import, repository & manifest commands, untag vs delete, purge (acr purge), image locking, retention policy, soft delete, artifact cache, show-usage |
references/networking-and-geo.md | Multi-region, private access, edge scenarios | Geo-replication, zone redundancy, private endpoints, network rules, dedicated data endpoints, connected registries, registry transfer pipelines |
Files
- ATTRIBUTION.mdAdded by AutoGineer891 B
- LICENSELicence file added by AutoGineer1.0 KiB
- SKILL.md5.0 KiB
- references/auth-and-security.md7.5 KiB
- references/build-and-tasks.md6.0 KiB
- references/images-and-artifacts.md6.4 KiB
- references/networking-and-geo.md6.8 KiB
references/build-and-tasks.md
Builds & ACR Tasks
Table of Contents
Quick Build (az acr build)
Run a Command or Multi-Step Task Once (az acr run)
ACR Tasks (az acr task)
Triggers
Multi-Step Task YAML
Agent Pools
Quick Build (az acr build)
Builds in Azure and pushes to the registry — no local Docker daemon required:
# Build from the current directory and push
az acr build --registry {registry} --image app:v1 .
# Custom Dockerfile, build args, target platform
az acr build --registry {registry} --image app:v1 \
--file docker/Dockerfile.prod \
--build-arg VERSION=1.2.3 \
--platform linux/amd64 .
# Cross-platform: each build produces ONE single-architecture image for the target platform
az acr build --registry {registry} --image app:v1-arm64 --platform linux/arm64 .
# For a true multi-arch image, build once per platform under arch-specific tags, then
# assemble and push a manifest list (docker manifest create/push, or docker buildx locally)
# Build directly from a Git repo (no local clone)
az acr build --registry {registry} --image app:v1 https://github.com/{org}/{repo}.git#{branch}:{folder}
# Build without pushing (validation only)
az acr build --registry {registry} --image app:test --no-push .Notes:
The build context is uploaded; use a
.dockerignoreto keep it small.Tag with a unique value per build (git SHA, run ID) — avoid relying on
latest.
Run a Command or Multi-Step Task Once (az acr run)
# Run a container command in the registry's task runner (context /dev/null = no upload)
az acr run --registry {registry} --cmd '{registry}.azurecr.io/app:v1' /dev/null
# Execute a multi-step task file against the current directory
az acr run --registry {registry} --file acb.yaml .ACR Tasks (az acr task)
Persistent, triggerable build definitions:
# Create a task that builds on every commit to main
az acr task create --registry {registry} --name build-app \
--image "app:{{.Run.ID}}" \
--context https://github.com/{org}/{repo}.git#main \
--file Dockerfile \
--git-access-token {pat} \
--commit-trigger-enabled true \
--base-image-trigger-enabled true
# Manually trigger, list, inspect
az acr task run --registry {registry} --name build-app
az acr task list --registry {registry} --output table
az acr task list-runs --registry {registry} --name build-app --output table
az acr task logs --registry {registry} --name build-app # latest run
az acr task logs --registry {registry} --run-id {run-id}
# Update / disable / delete
az acr task update --registry {registry} --name build-app --image "app:{{.Run.ID}}"
az acr task update --registry {registry} --name build-app --status Disabled
az acr task delete --registry {registry} --name build-app --yesUseful run variables for --image: {{.Run.ID}}, {{.Run.Commit}}, {{.Run.Branch}}, {{.Run.Date}}.
⚠️ On ABAC-enabled registries (roleAssignmentMode = AbacRepositoryPermissions), tasks and quick builds/runs have no default access to the source registry. Pass --source-acr-auth-id [caller] to az acr build/az acr run, and --source-acr-auth-id [system] (or a user-assigned identity resource ID) to az acr task create/update, then grant that identity the Container Registry Repository ... roles. Ensure the task actually has that identity — add --assign-identity [system] at creation, or run az acr task identity assign on an existing task, before referencing it.
Triggers
# Timer trigger (cron in UTC) — e.g., nightly rebuild
az acr task timer add --registry {registry} --name build-app \
--timer-name nightly --schedule "0 2 * * *"
az acr task timer list --registry {registry} --name build-app
az acr task timer remove --registry {registry} --name build-app --timer-name nightlyCommit trigger: rebuild on push to the tracked branch (
--commit-trigger-enabled).Base image trigger: rebuild automatically when the base image (e.g., a patched
mcr.microsoft.comimage) is updated (--base-image-trigger-enabled) — key for OS/framework patching.Timer trigger: cron schedules; also the standard way to schedule
acr purgecleanup (seeimages-and-artifacts.md).
Tasks that access other registries or Azure resources can use an identity:
az acr task identity assign --registry {registry} --name build-app # system-assigned
az acr task credential add --registry {registry} --name build-app \
--login-server {other-registry}.azurecr.io --use-identity [system]Multi-Step Task YAML
acb.yaml — build, test, then push only on success:
version: v1.1.0
steps:
- build: -t $Registry/app:{{.Run.ID}} -f Dockerfile .
- cmd: $Registry/app:{{.Run.ID}} run-tests
- push:
- $Registry/app:{{.Run.ID}}# Run once
az acr run --registry {registry} --file acb.yaml .
# Or create a triggered task from the YAML
az acr task create --registry {registry} --name build-test-push \
--file acb.yaml \
--context https://github.com/{org}/{repo}.git#main \
--git-access-token {pat}Agent Pools
Premium SKU. Dedicated task compute — for more CPU, or one of the two supported ways to run tasks against a network-restricted registry (the other being trusted services + the task network bypass policy, see networking-and-geo.md):
az acr agentpool create --registry {registry} --name pool1 --tier S2 # S1/S2/S3/I6
# For the firewall/VNet scenario, the pool MUST be attached to a subnet that can
# reach the registry's private endpoint — without --subnet-id it runs outside the VNet
az acr agentpool create --registry {registry} --name pool1 --tier S2 \
--subnet-id /subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.Network/virtualNetworks/{vnet}/subnets/{subnet}
az acr agentpool list --registry {registry} --output table
# Target the pool
az acr build --registry {registry} --agent-pool pool1 --image app:v1 .
az acr task create --registry {registry} --name build-app --agent-pool pool1 ...Requirements and compatibility
Written for: GitHub Copilot
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs network access, Needs a command-line tool
Security
What our scanner noticed· Low risk
- Instructions that use the network
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- First committed by
AClerbois
- Publisher
- GitHub (Official)
- Distributed by
- GitHub
- Source
- github/awesome-copilot · skills/azure-container-registry-cli · commit 797337f
- Licence
- MIT License (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
- Contributors
- AClerbois
AutoGineer is not affiliated with or endorsed by AClerbois or GitHub.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download azure-container-registry-cli.zip