A few of my clients have asked me on the difference between Containers and Virtual Machines (VM’s) in Azure and this week Microsoft published some great documentation on just this topic. I thought I would summarize this article below.
The difference between Azure Containers vs. Azure Virtual Machines
First off, Azure services themselves are running on virtual machines (most probably VM’s that are hosted on some sort of hybrid super Hyper-V product behind the scenes). Microsoft Azure allow users to create their own virtual machines with pre-canned templates of OS’s and configuration (i.e. Windows, Linux, etc.). Applications on these VM’s do not distinguish the fact that they are running on a VM (vs. a physical computer/server). The OS’s on these VM’s are fully blown meaning they offer the full stack of the software functionality of the OS you chose (which is A LOT of functionality).
Containers do not need (but can use) a solution like Hyper-V to host them as they are can be hosted on their own VM. A VM can host many containers. The container itself hosts the processes and file system to run an application and its dependencies in a resource isolated environment. The application that runs in the container pretty much sees the container as it’s host OS but can’t see any processes or any resources outside of its container or any other container.
Using Containers can improve the speed of your applications with respect to:
- Performance and start-up times
- Scaling
- Development
- Sharing
- Testing
- Deploying
Furthermore, Containers will make it a lot easier for your IT teams to:
- Move them across various environments for your Enterprises SDLC (i.e. DEV –> UAT –> PROD)
- Support setting up redundancy and load balancing for hosted applications
- Minimize hardware resources such as disk space, memory and CPU (and hence costs!)
Get started with Azure Containers today!