| new skills - Jon Welling
What are Containers?
Unlike other IT trends, containers have stuck around. There's a reason for that. Containers are excellent tools that have many advantages over virtual machines. In fact, containers are often described as mini virtual machines, but that's not accurate.
So, today we will discuss what are containers, how a container is different from a virtual machine, and what advantages containers have over a traditional VM.
An Overview of Containers
In this video, CBT Nuggets trainer James Conrad explains what a container is, how a container is different from a VM, process isolation and Hyper-V (Hypervisor), and the pros and cons of using a container. You'll also learn the basic vocabulary for containers that are often confused, such as images and containers.
What are Containers?
Containers are like virtual machines in that they are virtualized/sandboxed environments. Unlike virtual machines, containers don't need dedicated resources. Containers are highly portable.
A container consists of a few pieces. The most important part of the container is an image. An image is an application or service packaged into an immutable image file. That means that the image file can't be changed. Outside of the image file is a writable layer. When data is created inside a container, it's written inside this writable layer.
Containers also contain their own dedicated kernel. Containers do not depend on the kernel of the host computer. This has advantages. For instance, if an update to the kernel introduces a bug, that will not affect the containers running on the host computer.
The image, writable layer, and kernel are packaged into a container. This container can be moved between computers, too. That's because the container runs through a host application, like Windows Containers or Docker Desktop, to run. Because of this, containers can be hardware agnostic, too.
It's important to understand that while containers are often described as being virtualized thin clients, they are more sandboxed than virtualized. As we mentioned, containers use their own kernel, but they still share hardware resources with the rest of the system. They don't have their own. That means things like the heap in a container are still part of the base system heap but sandboxed and separated.
This is different from a VM where memory is sliced into pieces and dedicated to VMs. That means a single memory module in a VM could potentially have different heaps and stacks since those modules are technically being used between other computers.
What is the Difference Between a Container and a VM?
Virtual machines are basically virtual computers inside of another computer. Virtual machines are computer inception.
When you create a virtual machine, the hypervisor running that VM carves out hardware resources dedicated to that VM. For instance, if you create a virtual machine with two processors and 2Gbs of memory, two processor cores and 2Gbs of physical memory will be dedicated to that VM. That means those resources aren't available to the rest of the system.
Virtual machines also require an OS to work. After all, a virtual machine is nothing more than a virtual computer. That means VMs need additional resources to not only run the applications you need on them, but they need enough resources to run the OS, drivers, etc.. as well.
Containers don't have this overhead. Containers have just enough dedicated pieces of an OS and kernel to make the application work. Containers typically don't include drivers and other nonsense. Though containers are often described as being virtualized, they are technically more sandboxed.
What are the Advantages of Using Containers?
Containers can utilize more hardware than VMs on a host system. That's because VMs require having dedicated resources while containers share compute resources. That means more applications and services can run on the same system compared to VMs.
Containers are much more portable than VMs, too. Containers can be transported between systems almost as easily as a Java app. VMs can be exported and reinstated on another machine, but that other machine must be running the same hypervisor, hypervisor version, and so on.
Containers are much thinner than VMs, too. Containers only contain enough pieces of an OS and other libraries to make an app work. For instance, a WordPress VM will only have Linux Kernel, Apache, Postgres, PHP, and WordPress. A VM running WordPress will have all of that plus a full install of Linux and any other apps or libraries required to make Linux work.
Containers are fast, too. There’s no additional processing overhead because containers do not need to emulate or translate between the virtualized and physical layers. Containers don't need a long time to start up since they are not running an entire OS, either.
There are more differences between VMs and containers, but the ones mentioned above are the best reasons to use a container over a VM.
How to Learn More About Containers
Containers can be complicated to understand, but you will fall in love with them once you learn how to use them. If you're ready to learn more about containers, CBT Nuggets has online courses to learn how to create and manage containers. This is the first step on your container learning journey.
Containers come in different shapes and sizes, however. One of the most popular ways to deploy containers is through Docker. Learning Docker online is easy, too.
Finally, if Windows is your jam, you may want to learn to use Windows Server with containers. Many organizations are deploying less VMs and more containers where it makes sense. Containers have become important in the enterprise IT ecosystem.