What is our primary use case?
The institution I work in intended to go with the Azure App Service with Docker containers, and Azure Container Registry fits the bill.
During the standard Azure DevOps pipeline, the institution built the container and then pushed the container directly to Azure Container Registry. Then, in the next stage of the same DevOps pipeline, the institution pulls the Docker image from the Azure App Service, which is already deployed to Azure Container Registry.
Overall, the Azure App Service posts the Docker images through its connection with the Azure Container Registry.
How has it helped my organization?
I'm working in a financial institution that has limitations to the type of service it can consume, even on the Azure cloud. There is a limited set of services, and Azure Container Registry is the only service approved by the security guy.
My main goal was to work independently from the container and the Azure App Service language that's already been predefined because when you deploy the application through the Azure App Service and you're working with REST API applications, there is a limited set of Java runtime compilers that can go and run on the Azure App Service, so the institution does not want to depend on the programming language from Microsoft. This is why the institution decided to go with containers, which is the only way forward.
With the Azure App Service and containers, Azure Container Registry is the only solution that can push and pull the Docker images because the configuration my institution has doesn't have access to the public internet, so my team cannot pull images randomly from different sources, even on-premise ones, so using Azure Container Registry is the only way the institution can inject images into the environment and resource groups.
What is most valuable?
What I like best about Azure Container Registry is the isolation feature from the boundaries of the infrastructure you are trying to deploy. You have Docker as a service that you can run and define. You can define different types of programming languages that you would like to use or a predefined version that's been approved by the security team. Azure Container Registry gives you better flexibility in your day-to-day work. The solution allows you to isolate standard containers, which is its most valuable feature.
I also like that Azure Container Registry gives you excellent information about what's happening. For example, you can look into what types of images you've gathered.
Azure Container Registry does what it's supposed to do and gives you visibility into the Docker images, the logs, information on pulling and pushing the data, etc.
What needs improvement?
From time to time, I've noticed some hiccups in Azure Container Registry. For example, the solution didn't work thrice, and the only solution Microsoft provided was to update Azure Container Registry. I've noticed that the IP address attached to the machine changed in the end.
The solution doesn't always work perfectly, so from time to time, you cannot pull or push the Docker images to the environment, which is an area for improvement. The only solution to this issue is to establish one more Azure Container Registry and attach the new IP address and DNS name to it.
The accessibility of Azure Container Registry also has room for improvement because the solution is not always accessible 24 x 7. I experienced this three times when the service wasn't responding, so I could not push or pull images, and I had to decommission Azure Container Registry and redeploy it. The only good thing is that I already have the infrastructure as a code, which makes it easier for me to set the solution up and create the environment from scratch. Still, the process will be annoying for people with manual operations around Azure Container Registry, mainly because the issue happens from time to time.
The only functionality I want to add to the service is the auto-scanning of images, which should tell me if there's any issue with the Docker images I need to address. The JFrog Artifactory has this functionality, but it would be an excellent feature to add to Azure Container Registry to scan the Docker images and check for possible vulnerabilities.
For how long have I used the solution?
I've been using Azure Container Registry for seven months.
What do I think about the stability of the solution?
In the seven months of using Azure Container Registry, it didn't work three times, so stability-wise, it's a seven out of ten, but overall the service is good. Sometimes stability isn't the best.
What do I think about the scalability of the solution?
Azure Container Registry is easy to scale. Whether you're going with the standard portal components or you'd like to use it through the infrastructure as a code, it doesn't take much time.
You have to click a button to scale up and use a different type of machine that supports the service, for example, and then you can switch from basic to premium operation. It's pretty easy. By default, though, if you go with the premium version, it's not easy to downgrade the infrastructure, which is typical for every cloud provider.
How are customer service and support?
I have yet to contact the technical support for Azure Container Registry.
Which solution did I use previously and why did I switch?
As mentioned previously, Azure Container Registry was the only solution approved by the security team. The institution has an on-premise solution, the JFrog Artifactory, where the binaries are kept and connected. Still, JFrog Artifactory doesn't have access to the Azure cloud, so the only solution was to compile applications and create Docker images during the CI pipeline, then push the images to the JFrog Artifactory, and then upload the same Docker images to Azure Container Registry, attached to the specific application. There's no other option to work with Docker containers in the environment apart from Azure Container Registry.
How was the initial setup?
The initial setup for Azure Container Registry was pretty straightforward, especially when it's on an Azure environment. There's limited information you'll have to fill in, and then the service works straight away, so you won't have to set up complex elements to get Azure Container Registry up and running.
I'd rate the setup as ten out of ten because it's easy, even when you want to tune it up to disable public access, as I did. After all, by default, it's accessible to the public. If you want to set up private access on Azure Container Registry and remove the login and password token, it's easy to do. Even if you take one step forward by creating the same operation from the portal, it's made through the adjacent files, which is the Azure infrastructure as a code, so it's still relatively easy to set up.
Setting up Azure Container Registry took just one to two minutes.
What about the implementation team?
My team deployed Azure Container Registry.
What was our ROI?
It's hard to say if there's ROI from Azure Container Registry because it nearly has the same functionality as the standard on-premise solution, such as JFrog Artifactory, which can support any application from the standard to Java to JavaScript elements, Docker images, etc. You need an additional service, in this case, Azure Container Registry, because of some limitations from the security team.
In this particular scenario, I don't see any specific value from Azure Container Registry, ROI-wise, because the JFrog Artifactory has the same functionality, sometimes even more, but because the connection is not allowed from an on-premise to the internal application infrastructure, then Azure Container Registry is the only option for my institution.
What's my experience with pricing, setup cost, and licensing?
I have no information on how much Azure Container Registry costs. I know it's the only solution my institution can use, so the cost was approved.
What other advice do I have?
My team has eleven members, all using Azure Container Registry. The institution I belong to has other users of Azure Container Registry. Still, it's hard to say how many because of the policy that every application should have its Azure Container Registry for security purposes.
My advice to any first-time user of Azure Container Registry or those looking to implement it is to build it as part of the infrastructure pipeline. When there is an issue with the service, it would be wise to auto-deploy it straight away instead of tweaking it from scratch because when you create Azure Container Registry from scratch, particularly when you set it up as not accessible to the public, every time you recreate it, you have to establish a dedicated connection and also set it up and keep the login password in the key vault, so there's some element of doing it manually, which is time-consuming. When there's some stability in Azure Container Registry, it's easier because you can trigger the pipeline, and it does everything you need after a few minutes versus spending one or two more days to set it up from scratch.
I'd rate Azure Container Registry as eight out of ten because it has many features required in a container registry, and the only missing part is image scanning for vulnerabilities. The service even allows you to disable public access, which is quite good because that's not always out of the box for other cloud providers. You already have the Webhooks in Azure Container Registry, which I'm trying to use. When there's a push or pull of information, you can inform other people or teams that there's a trigger, which is an excellent feature. Personally, the accessibility issue of Azure Container Registry, where the IP address is disabled, and you'd have to decommission and set the service up again, which affects stability, made me rate the service an eight rather than give it a perfect score.
My institution has a partnership with Azure Container Registry.
Which deployment model are you using for this solution?
Private Cloud
If public cloud, private cloud, or hybrid cloud, which cloud provider do you use?
Microsoft Azure
Disclosure: My company has a business relationship with this vendor other than being a customer. Partner