Azure Container Registry provides the functionality to store and share private container images. Within this hands-on lab, we’ll review the permissions for a service principal to access Azure Container Registry. This is helpful in scenarios where you have apps/scripts that need some form of automated access to push/pull images to/from your registry. We’ll push and pull some images from the registry and run a container image.
Learning Objectives
Successfully complete this lab by achieving the following learning objectives:
- Confirm Service Principal Access to Push/Pull Container Images
- Confirm the service principal has access via Azure RBAC to push/pull container images.
- Collect the registry login server from the Azure portal. You’ll need it later when
<REGISTRY_LOGIN_SERVER>
is specified.
- Collect the registry login server from the Azure portal. You’ll need it later when
- Confirm the service principal has access via Azure RBAC to push/pull container images.
- Push/Pull and Run Container Images Using the Service Principal
- Log in to the VM.
- Log in to the container registry using the service principal’s credentials and the following code:
docker login -u <SP_APPLICATION_ID> -p <SP_SECRET> <REGISTRY_LOGIN_SERVER>
- Pull the ASP.NET sample container image from Microsoft’s public repository using
docker pull mcr.microsoft.com/dotnet/samples:aspnetapp
. - Tag the image with your repository using
docker tag mcr.microsoft.com/dotnet/samples:aspnetapp <REGISTRY_LOGIN_SERVER>/aspnetapp
. - Push the image to your repository using
docker push <REGISTRY_LOGIN_SERVER>/aspnetapp
. - Retreive the local Microsoft image ID with
docker image ls
. - Remove the Microsoft image by running
docker image rm <IMAGE_ID> -f
. - Pull the image from your repository with
docker pull <REGISTRY_LOGIN_SERVER>/aspnetapp
. - Run the image with
docker run -p 8080:80 -d <REGISTRY_LOGIN_SERVER>/aspnetapp:latest
. - Access
http://localhost:8080
to confirm the container is running.