Read on:
Beginners’ Guide for Microsoft Hyper-V: Overview of Hyper-V – Part 1
Beginners’ Guide for Microsoft Hyper-V: How to Install Microsoft Hyper-V Using Server Manager – Part 2
Beginners’ Guide for Microsoft Hyper-V: How to Install Microsoft Hyper-V with PowerShell – Part 3
Read More
As you become more familiar and comfortable using Hyper-V virtual machines and running containers on your Hyper-V hosts, it will be necessary to decide which services and apps you run where. Hyper-V is an excellent platform for either virtual machines or containers and can handle both use cases well. However, deciding which applications run where is essential to optimally utilize your hardware and software investments. So, let’s look at Hyper-V containers vs. virtual machines and see which infrastructure fits which use case.
What are virtual machines?
Before comparing the advantages and disadvantages of virtual machines and containers, we first need to understand what a virtual machine and a container are. Virtual machines are virtual representations of a physical machine running on the same hardware. Virtual machines are made possible by a hypervisor that virtualizes the hardware and allows multiple operating systems to run on the physical hardware.
Virtual machines provide additional security benefits for applications and workloads in each environment. In addition, running multiple virtual operating systems on the same physical hardware has led to much more efficient use of today’s powerful physical hardware. As a result, many organizations underwent massive server exercises to perform “physical to virtual” or P2V operations to migrate physical hardware to virtual machines.
Why use virtual machines?
When thinking about full virtual machine instances running on a hypervisor host like Hyper-V, what use case do virtual machines fit best? Virtual machines are full operating system instances. Therefore, they are excellent solutions for applications that require everything an operating system has to offer to enable application functionality.
Virtual machines are well-suited for the more legacy monolithic applications that have all components of an application run in a single environment. However, for organizations not looking to transition away from a specific monolithic application and refactoring is not something planned to transition to microservices, VMs will continue to be the best option.
What are containers?
Containers are a much smaller construct than full virtual machines. Instead of virtualizing the underlying hardware, they only virtualize the operating system. In addition, they take a lean approach to the components installed and only contain the necessary components needed for a specific application. Finally, containers share the host operating system kernel. So, one of the limitations of containers is that the host is running the same operating system as the container.
In other words, you can’t run a Linux container directly on top of a Windows host or a Windows container on a Linux host. Generally, in this case, organizations run a virtual machine as a container host and run the containers in the virtual machine container host.
Containers massively reduce the footprint of infrastructure to run applications. Since they do not run the entire operating system and only the absolutely required components for specific applications, they can be exponentially smaller. While virtual machines often weigh in, in the tens of gigabytes in size, containers may only be a few hundred megabytes.
Why use containers?
So, with the characteristics of containers described above, what are the prime use cases for containers? Containers are a great way to fit as many applications and services as possible on your existing server resources. With their small footprint, you can potentially house many more services and applications on the same hardware when compared to full virtual machines. If you use the command below to pull a fresh nanoserver ltsc2022 image, you will see the tiny size of a nanoserver image. Even a full servercore image is 5.28 GB, much smaller than a full virtual machine.
docker pull mcr.microsoft.com/windows/nanoserver:ltsc2022
With the smaller size of containers, they are perfect for building out microservice applications. Microservices allow splitting out monolithic applications into much smaller components. It has many advantages, including the ability to introduce DevOps processes and continuous integration and development of modern applications. In addition, when applications are broken into smaller chunks, it is easier to upgrade individual components.
Starting the journey to microservices also positions organizations for cloud migrations. Microservices architectures are driven by containers and are the basis for cloud-native architecture.
Kubernetes vs Containers?
If you are running Hyper-V, should you care about Kubernetes. Kubernetes is the de facto standard for running containerized applications. When running containers in production, Kubernetes is the intelligent approach. Kubernetes provides availability, scalability, and resiliency for your containers, as containers do not provide resiliency in themselves. Like virtual machines, they need a solution to ensure their operation is highly available and they can be restarted in the event of a failure.
Kubernetes orchestrates these activities. With multiple Kubernetes hosts, containers can have resiliency against failure. Hyper-V hosts can serve as Kubernetes hosts. The Azure Stack HCI solution, as we will see below, allows running the Azure Kubernetes Services in a resilient way.
Azure Stack HCI and Azure Kubernetes Service (AKS)
Microsoft Azure includes a service called Azure Kubernetes Service (AKS). The Azure Kubernetes Service provides an as-a-Service offering for running Kubernetes-orchestrated containers. However, using Azure Stack HCI, built on top of Hyper-V technology, you can run a hybrid deployment of Azure Kubernetes Service that allows running an on-premises implementation of AKS for running containerized applications.
Learn more about the Azure Kubernetes Service hybrid deployment here: Azure Kubernetes Service (AKS) hybrid deployment options documentation | Microsoft Learn
Hyper-V containers vs. virtual machines FAQs
What are virtual machines?
Virtual machines are virtual representations of physical servers and workstations, running full operating system installations. Virtual machines are fully segregated from one another. They provide the best fit for large monolithic applications as they provide access to all operating system resources and underlying software. With the full operating system installation, they are heavy. They can range in size from a few gigabytes to tens of gigabytes and more.
What are containers?
Containers virtualize the operating systems without virtualizing the underlying physical hardware. Instead, they use the container host kernel and include only the software needed for running applications. They are often referred to as “application images.” Compared to virtual machines, they are much smaller and may only be a few hundred megabytes in size or even much smaller. As a result, containers are perfect for microservices and modern, cloud-native applications.
What is Kubernetes?
Kubernetes is a container orchestration platform that has evolved into the de facto standard for running containers at scale, both on-premises and in the cloud. Using Kubernetes, you have resiliency, scalability, and availability of containerized workloads.
Wrapping up
Hopefully, this comparison of Hyper-V containers vs. virtual machines for beginners helps clarify the differences between VMs and containers and why you use one over the other. Rather than competing solutions, they are often complimentary as containers rely on VMs for their container host resources. Most organizations run a combination of both VMs and containers to fit the specific use case and technical challenges, they need to solve.
Beginners Guide for Microsoft Hyper-V: How to Install Microsoft Hyper-V in Windows Server Core – Part 4
Beginners Guide for Microsoft Hyper-V: Remote Management of Hyper-V – Part 5
Beginners Guide for Microsoft Hyper-V: How to Install Hyper-V Server – Part 6
Beginner’s Guide for Microsoft Hyper-V: What is Azure Stack HCI – Part 7
Beginner’s Guide for Microsoft Hyper-V: Windows Admin Center Hyper-V Management – Part 8
Beginner’s Guide for Microsoft Hyper-V: Configuration of Hyper-V Networking Best Practices – Part 9
Beginner’s Guide for Microsoft Hyper-V: Hyper-V Storage Best Practices and Configuration – Part 10
Beginner’s Guide for Microsoft Hyper-V: How to build a Virtual Lab with Hyper-V – Part 11
Beginner’s Guide for Microsoft Hyper-V: Top 10 PowerShell Commands for Hyper-V – Part 12
Beginner’s Guide for Microsoft Hyper-V: How to Create a Hyper-V Virtual Machine – Part 13
Beginner’s Guide for Microsoft Hyper-V: Hyper-V Shared Storage for Beginners – Part 14
Beginner’s Guide for Microsoft Hyper-V: How to Create Hyper-V Cluster – Part 15
Beginner’s Guide for Microsoft Hyper-V: What is Non-Uniform Memory Access (NUMA) – Part 16
Beginner’s Guide for Microsoft Hyper-V: Hyper-V Dynamic Memory – Part 17
Beginner’s Guide for Microsoft Hyper-V: Cluster Aware Updating (CAU) – Part 18
Beginner’s Guide for Microsoft Hyper-V: Hyper-V Containers – Part 19
Beginner’s Guide for Microsoft Hyper-V: Managing Windows Server Containers with Windows Admin Center – Part 20
Beginner’s Guide for Microsoft Hyper-V: What are Hyper-V Checkpoints – Part 21
Beginners Guide for Microsoft Hyper-V: How to Create Cluster Shared Volumes (CSVs) – Part 22
Beginners’ Guide for Microsoft Hyper-V: VHD vs VHDX Vs AVHD/AVHDX: Overview of Virtual Disk Formats – Part 23
Beginners’ Guide for Microsoft Hyper-V: Hyper-V Live Migration – Part 24
Beginners’ Guide for Microsoft Hyper-V: Hyper-V High Availability – Part 25
Beginners’ Guide for Microsoft Hyper-V: How to Export and Import Hyper-V VM’s – Part 26
Beginners’ Guide for Microsoft Hyper-V: How To Install Docker Container on Windows Server – Part 27
Beginners’ Guide for Microsoft Hyper-V: How to Run Linux Containers on Hyper-V – Part 28
Follow our Twitter and Facebook feeds for new releases, updates, insightful posts and more.