Skip to content

Container Registry

miniblue emulates Azure Container Registry (ACR) with ARM management endpoints and basic Docker registry v2 API stubs.

API endpoints

ARM (management)

Method Path Description
PUT /subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.ContainerRegistry/registries/{name} Create or update
GET /subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.ContainerRegistry/registries/{name} Get
DELETE /subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.ContainerRegistry/registries/{name} Delete
GET /subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.ContainerRegistry/registries List
POST /subscriptions/{sub}/providers/Microsoft.ContainerRegistry/checkNameAvailability Check name

Docker Registry v2 (stubs)

Method Path Description
GET /acr/{registry}/v2/{repository}/manifests List manifests
GET /acr/{registry}/v2/{repository}/manifests/{ref} Get manifest
GET /acr/{registry}/v2/{repository}/tags/list List tags

Create a registry

curl -X PUT "http://localhost:4566/subscriptions/sub1/resourceGroups/myRG/providers/Microsoft.ContainerRegistry/registries/myregistry?api-version=2020-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "location": "eastus",
    "sku": {
      "name": "Basic"
    }
  }'

Response (201 Created):

{
  "id": "/subscriptions/sub1/resourceGroups/myRG/providers/Microsoft.ContainerRegistry/registries/myregistry",
  "name": "myregistry",
  "type": "Microsoft.ContainerRegistry/registries",
  "location": "eastus",
  "sku": {
    "name": "Basic",
    "tier": "Basic"
  },
  "properties": {
    "loginServer": "myregistry.azurecr.io",
    "provisioningState": "Succeeded",
    "adminUserEnabled": false,
    "creationDate": "2026-01-01T00:00:00Z",
    "publicNetworkAccess": "Enabled",
    "zoneRedundancy": "Disabled",
    "networkRuleBypassOptions": "AzureServices",
    "dataEndpointEnabled": false,
    "encryption": { "status": "disabled" },
    "networkRuleSet": { "defaultAction": "Allow", "ipRules": [] },
    "policies": {
      "quarantinePolicy": { "status": "disabled" },
      "trustPolicy": { "status": "disabled", "type": "Notary" },
      "retentionPolicy": { "status": "disabled", "days": 7 },
      "exportPolicy": { "status": "enabled" }
    }
  }
}

Get a registry

curl "http://localhost:4566/subscriptions/sub1/resourceGroups/myRG/providers/Microsoft.ContainerRegistry/registries/myregistry?api-version=2020-06-01"

List registries

curl "http://localhost:4566/subscriptions/sub1/resourceGroups/myRG/providers/Microsoft.ContainerRegistry/registries?api-version=2020-06-01"

Check name availability

curl -X POST "http://localhost:4566/subscriptions/sub1/providers/Microsoft.ContainerRegistry/checkNameAvailability?api-version=2020-06-01" \
  -H "Content-Type: application/json" \
  -d '{"name": "myregistry", "type": "Microsoft.ContainerRegistry/registries"}'

Response:

{
  "nameAvailable": true
}

If the name is already taken:

{
  "nameAvailable": false,
  "reason": "AlreadyExists",
  "message": "The registry myregistry is already in use."
}

Delete a registry

curl -X DELETE "http://localhost:4566/subscriptions/sub1/resourceGroups/myRG/providers/Microsoft.ContainerRegistry/registries/myregistry?api-version=2020-06-01"

Response: 202 Accepted

Docker Registry v2 stubs

These endpoints return empty/stub responses for compatibility:

# List manifests (returns empty array)
curl "http://localhost:4566/acr/myregistry/v2/myapp/manifests"

# Get a manifest
curl "http://localhost:4566/acr/myregistry/v2/myapp/manifests/latest"

# List tags (returns empty array)
curl "http://localhost:4566/acr/myregistry/v2/myapp/tags/list"

Info

The Docker v2 endpoints are stubs for basic compatibility. Actual image push/pull is not yet supported.

Terraform

resource "azurerm_container_registry" "example" {
  name                = "exampleregistry"
  resource_group_name = azurerm_resource_group.example.name
  location            = azurerm_resource_group.example.location
  sku                 = "Basic"
}

Supported SKU values: Basic, Standard, Premium.

See the Terraform guide for full provider configuration.