
Azure Container Registry (ACR) is Microsoft's managed Docker registry service built on the open-source Docker Registry 2.0. While ACR integrates tightly with Azure services, organizations often migrate to alternative registries for cost optimization, multi-cloud flexibility, or simpler management. Vultr Container Registry offers a straightforward, globally distributed solution with predictable pricing and easy integration with container orchestration platforms.
This guide explains how to migrate container images from Azure Container Registry to Vultr Container Registry using Docker and Skopeo, covering authentication, transfer, verification, and cutover.
Before you begin, you need to:
Connect your workstation to ACR so Docker can pull images. Azure offers multiple authentication methods depending on your security requirements.
Sign in to Azure CLI.
Follow the browser prompts to complete authentication.
Authenticate Docker with your ACR instance. Replace ACR-NAME with your registry name (without the .azurecr.io suffix).
Output:
If you prefer token-based authentication or need to authenticate from CI/CD pipelines, you can enable the admin user or use a service principal.
Before migrating, catalog all repositories and their tags in your ACR. This inventory helps you track progress and ensures no images are missed during the transfer.
List all repositories in your ACR.
Output:
View tags for a specific repository.
Output:
List all images with their tags across repositories.
Document this inventory before proceeding with migration.
Configure Docker to push images to your Vultr registry. You'll need the registry URL and API credentials from the Vultr Console.
Log in to the Vultr Console.
Navigate to Products.
Select Container Registry.
Select your registry and note the Registry URL, Username, and API Key from the overview page.
Authenticate Docker with the Vultr registry. Replace VULTR-REGISTRY-URL, USERNAME, and API-KEY with your credentials. The registry URL should not include https://.
Output:
The standard migration workflow involves pulling images from ACR to your workstation, retagging them with the Vultr registry URL, and pushing to the destination. You can migrate individual images or automate the entire registry transfer with a script.
Pull an image from ACR. Replace ACR-NAME with your Azure registry name.
Tag the image for Vultr. Replace VULTR-REGISTRY-URL with your Vultr registry URL.
Push the image to Vultr.
Automate the migration of all images using a shell script.
Create a migration script.
Add the following content. Replace ACR-NAME and VULTR-REGISTRY-URL with your values.
Save and close the file.
Make the script executable and run it.
After migration, validate that images transferred without corruption by comparing SHA256 digests between registries and running test containers from Vultr.
Open the Vultr Container Registry in the Vultr Console and verify your repositories appear under the Repositories tab.
Compare image digests between ACR and Vultr to confirm integrity.
Get the digest from ACR:
Get the digest from Vultr:
The digests should match, confirming the image transferred without corruption.
Run a test container from the Vultr registry.
Output:
After images are verified on Vultr, update your Dockerfiles, orchestration configs, and CI/CD pipelines to use the new registry. This section covers common deployment scenarios including Docker Compose and Kubernetes.
Change base image references from ACR to Vultr.
Before:
After:
Update the image references in your compose file.
Redeploy the services.
Modify your deployment manifests.
If your cluster requires authentication, create an image pull secret. Replace the placeholders with your Vultr registry credentials.
Reference the secret in your deployment.
Apply the updated manifests.
Replace ACR authentication and image references in your pipeline configurations.
Before (Azure DevOps / GitHub Actions):
After:
You have successfully migrated your container images from Azure Container Registry to Vultr Container Registry. This guide covered authenticating with both registries, transferring images using Docker and Skopeo, verifying integrity through digest comparison, and updating your deployments for the cutover. Your container workloads now benefit from Vultr's predictable pricing and global infrastructure. For more details on managing your registry, see the Vultr Container Registry documentation.
0 Comments
Be the first to comment and share your perspective with the community.