#docker #credentials #azure

app docker-credential-acr-login

A docker credential helper for Azure Container Registries (ACRs)

2 releases

0.1.1 Jan 25, 2024
0.1.0 Nov 21, 2023

#349 in Authentication

Download history 23/week @ 2023-11-20 6/week @ 2023-11-27 2/week @ 2023-12-04 2/week @ 2023-12-11 1/week @ 2023-12-18 2/week @ 2023-12-25 1/week @ 2024-01-01 1/week @ 2024-01-15 33/week @ 2024-01-22 10/week @ 2024-01-29 3/week @ 2024-02-05 17/week @ 2024-02-12 63/week @ 2024-02-19

93 downloads per month

MIT license

83 lines


A docker credential helper for Azure Container Registries (ACRs). This allows you to automatically log into Azure Container Registries without having to az acr login first.

How do I use it?

Install it with

cargo install docker-credential-acr-login

and ensure docker-credential-acr-login is available on your PATH.

Next, in $HOME/.docker/config.json, either add:

    "credsStore": "acr-login"

to handle requests for all Azure registries, or

    "credHelpers": {
        "<registry>.azurecr.io": "acr-login"

to handle requests for a specific registry.

Required configuration

Before running Docker, you must:

  • set the environment variable AZURE_TENANT_ID to the tenant ID that the ACR resides in
  • ensure that you have Azure credential details set up; e.g. one of
    • logged into Azure CLI using az login
    • set AZURE_CLIENT_ID and AZURE_CLIENT_SECRET environment variables with appropriate values
    • any other method as per DefaultAzureCredential
  • ensure that whichever identity you are using has AcrPull and Reader on the ACR (to pull) and AcrPush (to push)


Before running docker operations you can set the logging level by setting the environment variable ACR_LOGIN_LOG_LEVEL to one of error, warn, info, debug, or trace.

Example trace output:

$ docker pull dockercredentialacrlogin.azurecr.io/python:3.8-alpine
TRACE - Params: [("grant_type", "access_token"), ("service", "dockercredentialacrlogin.azurecr.io"), ("tenant", "<tenant>"), ("access_token", "eyJ...qiw")]
TRACE - Credentials: Object {"Secret": String("eyJ...beA"), "Username": String("000...000")}
3.8-alpine: Pulling from python
Digest: sha256:c494835919a916a1b1248eebe11815ada264e7b6b29f8784060c5f39b20b4747
Status: Downloaded newer image for dockercredentialacrlogin.azurecr.io/python:3.8-alpine


~415K SLoC