Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
ACR image building and pushing
📖 Scenario: You work as a cloud engineer for a company that uses Azure Container Registry (ACR) to store Docker container images. Your team wants to automate the process of building a Docker image from source code and pushing it to ACR for deployment.
🎯 Goal: Build a Docker image from a simple Dockerfile and push it to an Azure Container Registry repository using Azure CLI commands.
📋 What You'll Learn
Create a variable for the Azure Container Registry name
Create a variable for the Docker image name and tag
Use Azure CLI to build the Docker image with az acr build
Verify the built image in the Azure Container Registry
💡 Why This Matters
🌍 Real World
Automating container image builds and pushes to Azure Container Registry is common in DevOps pipelines for cloud applications.
💼 Career
Cloud engineers and DevOps professionals use these skills to manage containerized applications and streamline deployments.
Progress0 / 4 steps
1
Set the Azure Container Registry name
Create a variable called acr_name and set it to the exact string mycontainerregistry which is the name of your Azure Container Registry.
Azure
Hint
The Azure Container Registry name is a unique string identifying your registry. Use the exact name mycontainerregistry.
2
Set the Docker image name and tag
Create a variable called image_name and set it to the exact string myapp:v1 which represents the Docker image name and tag.
Azure
Hint
The Docker image name includes the tag after a colon. Use myapp:v1 exactly.
3
Build the Docker image using Azure CLI
Write a command string called build_command that uses az acr build to build the Docker image. Use the variables acr_name and image_name in the command. The command should build from the current directory ..
Azure
Hint
Use an f-string to insert acr_name and image_name into the az acr build command. The build context is the current directory ..
4
Verify the Docker image in Azure Container Registry
Write a command string called push_command that uses az acr repository show to confirm the image exists in the registry. Use acr_name and image_name variables in the command.
Azure
Hint
Use az acr repository show with --name for the registry and --image for the image name to confirm the image is pushed.
Practice
(1/5)
1. What is the primary purpose of the az acr build command in Azure Container Registry (ACR)?
easy
A. To run a container instance in Azure
B. To delete an image from ACR
C. To create a new Azure Container Registry
D. To build a container image and push it directly to ACR
Solution
Step 1: Understand the command purpose
The az acr build command is designed to build container images from a Dockerfile and push them to an Azure Container Registry.
Step 2: Compare options with command function
Options A, B, and C describe other unrelated actions like deleting images, creating registries, or running containers, which are not the purpose of az acr build.
Final Answer:
To build a container image and push it directly to ACR -> Option D
Quick Check:
az acr build = build and push image [OK]
Hint: Remember: az acr build builds and pushes images [OK]
Common Mistakes:
Confusing build with delete or create registry commands
Thinking az acr build runs containers
Assuming it only builds locally without pushing
2. Which of the following is the correct syntax to build and push an image named myapp:v1 to an Azure Container Registry named myregistry using az acr build?
easy
A. az acr build --registry myregistry --image myapp:v1 .
B. az acr build --image myapp:v1 --registry myregistry
C. az acr build --name myregistry --tag myapp:v1 .
D. az acr build --push --image myapp:v1 --registry myregistry
Solution
Step 1: Identify correct parameter order and names
The correct syntax uses --registry to specify the registry, --image for image name and tag, followed by the build context path (here . for current directory).
Step 2: Validate options
az acr build --image myapp:v1 --registry myregistry omits the required build context path (.). az acr build --registry myregistry --image myapp:v1 . matches the correct syntax. az acr build --name myregistry --tag myapp:v1 . uses incorrect flags --name and --tag which are invalid. az acr build --push --image myapp:v1 --registry myregistry uses --push which is not a valid flag for az acr build.
Final Answer:
az acr build --registry myregistry --image myapp:v1 . -> Option A
Hint: Use --registry then --image followed by context path [OK]
Common Mistakes:
Using --name instead of --registry
Adding unsupported flags like --push
Omitting the build context path
3. Given the command:
az acr build --registry myregistry --image sampleapp:latest ./app
What will happen after this command runs successfully?
medium
A. The image sampleapp:latest is pulled from myregistry and run locally
B. The Dockerfile in ./app is built into an image tagged sampleapp:latest and pushed to myregistry
C. A new Azure Container Registry named sampleapp is created
D. The local Docker daemon builds the image but does not push it
Solution
Step 1: Understand the command behavior
The az acr build command builds the Dockerfile found in the specified path (./app) and pushes the resulting image to the specified Azure Container Registry (myregistry) with the given tag (sampleapp:latest).
Step 2: Eliminate incorrect options
The image sampleapp:latest is pulled from myregistry and run locally describes pulling and running, which az acr build does not do. A new Azure Container Registry named sampleapp is created talks about creating a registry, which requires a different command. The local Docker daemon builds the image but does not push it suggests local build only, but az acr build builds in Azure and pushes automatically.
Final Answer:
The Dockerfile in ./app is built into an image tagged sampleapp:latest and pushed to myregistry -> Option B
Quick Check:
az acr build builds and pushes image [OK]
Hint: az acr build builds remotely and pushes automatically [OK]
Common Mistakes:
Thinking image is only built locally
Confusing build with run or pull
Assuming registry is created automatically
4. You run the command:
az acr build --registry myregistry --image myapp:v2 ./src
but get an error saying Dockerfile not found. What is the most likely cause?
medium
A. The image tag myapp:v2 is invalid
B. The registry name myregistry is incorrect
C. The ./src directory does not contain a Dockerfile
D. You forgot to login to Azure CLI
Solution
Step 1: Analyze the error message
The error Dockerfile not found means the build context directory (./src) does not have a Dockerfile, which is required to build the image.
Step 2: Check other options
Incorrect registry or image tag would cause different errors. Forgetting to login would cause authentication errors, not missing Dockerfile.
Final Answer:
The ./src directory does not contain a Dockerfile -> Option C
Quick Check:
Missing Dockerfile = Dockerfile not found error [OK]
Hint: Ensure Dockerfile exists in build context folder [OK]
Common Mistakes:
Assuming registry or tag causes Dockerfile error
Ignoring the build context path
Not verifying Dockerfile presence before build
5. You want to build and push multiple images with tags v1 and latest for your app using az acr build. Which approach correctly achieves this in a single command?
hard
A. Use --image myapp:v1 --image myapp:latest with the build context path
B. Run az acr build twice, once for each tag
C. Use --tag v1,latest with the image name
D. Build locally twice and push manually
Solution
Step 1: Understand multi-tag build syntax
The az acr build command supports specifying multiple --image flags to tag the same build with different tags in one command.
Step 2: Evaluate options
Use --image myapp:v1 --image myapp:latest with the build context path correctly uses multiple --image flags. Run az acr build twice, once for each tag works but is two commands, not single. Use --tag v1,latest with the image name uses an invalid --tag flag. Build locally twice and push manually is manual and not a single command.
Final Answer:
Use --image myapp:v1 --image myapp:latest with the build context path -> Option A
Quick Check:
Multiple --image flags tag multiple images [OK]
Hint: Use multiple --image flags to tag in one build [OK]