Virtualization is the foundation of cloud computing. Many people have heard of “the cloud,” but only see it as a mysterious entity that somehow holds all of our information. In reality, cloud computing is made possible by virtualization, which divides one computer’s hardware into individual components, or Virtual Machines (VMs), that act as their own separate computer. This allows for more applications and software to be used with a single machine. Virtualization and cloud computing have made software development more efficient, cost-effective and easier to manage.
VMs act as small, individual computers that replicate a machine’s operating system (OS); this makes VMs “heavy” and use a good amount of storage space. Since they run their own OS, they are self-contained and secure. VMs are great for running legacy systems or apps that need specific OSes. However, they aren’t the only way to achieve virtualization. In fact, depending on what they’re used for, VMs are a less efficient method. That’s where containers come in.
Software containers are exactly what they sound like - a container, or package, of code and its dependencies (like libraries, system tools and code) that allow an application to run on one software system and move to another. Containers rely on the underlying operating system’s kernel instead of running its own OS, making them lightweight, portable, and faster to start than VMs that have to reboot an entire OS. That’s why containers are so popular in modern software development - they can be deployed on any device in the same way. This portability is the key difference between a container and a VM.
Building Containers with Docker
Docker is a popular platform, and one we use here at Trinity IT, for building containerized applications efficiently. Developers create containers and use a Docker Image as the blueprint for the application within the container. The Docker Image is portable and can be used on any machine that Docker is installed on. By using Docker to package apps into containers, the app works the same across all devices: phones, laptops, tablets, etc.
Docker can be broken down simply:
- Docker Image: This image is the blueprint for an application.
- Container: The running instance of the image (or blueprint) - this is the app that was designed and all of its dependencies (for example: code and libraries)
- Docker Hub: The hub that houses pre-built docker images, allowing developers to share them.
Virtualization is a vast topic, one that cannot be fully encompassed in one blog. If you want to learn more about containers, VMs, and virtualization in general, IBM's article is a great and thorough resource.
Elizabeth Casalnova,
(267) 396-7901
elizabeth.casalnova@trinityit.biz