As cloud computing becomes more and more prevalent there has been a need for a new type of virtualization. This has come in the form of Containers. To explain what Containers are, we’re going to start by explaining what they’re not.
They are not Virtual Machines – a VM is an emulation of a computer system. In other words, it runs what appears to be several separate computers, but they are all running on a single physical computer. The operating system and the applications running on each of these virtual computers share hardware from the host system; however, each separate VM needs its own underlying operating system. Not only does it run its own operating system, but it runs virtual copies of all the hardware it needs, for instance, network interfaces, and virtual disks. This can take up a lot of RAM and CPU cycles and usually requires a very powerful computer to run all these separate computers; even then you might find that you run out of system resources quite quickly. To alleviate this problem, Containers were invented.
So what is a Container? Well, rather than virtualizing an entire computer system as you would for a VM, a Container only virtualizes the operating system. Containers run on a physical server like VMs do, but Containers share the host OS kernel and usually the binaries and libraries as well. Anything that is shared becomes read-only to the Container, making them secure and safe to run, but still a lot smaller than a VM. A virtual machine created to run MySQL, for example, needs to have installed a Linux or Windows OS, and the drivers, and virtual hardware to go along with it, as a result, it could take several gigabytes of space. A MySQL Container, on the other hand, only requires 136MB of space because it is essentially just the packaging, the application, the binaries and libraries it needs to run.
In conclusion what are the advantages of Containers? First, you can put 2 – 3x more applications on a single server with Containers than you can with VMs. Second, with containers, you can create a portable, consistent operating environment for developing, testing and deployment. Third, apps start up much quicker compared to VMs. And finally, Containers have reduced and simplified security updates and IT resources.
Watch one of our developers explain how Containers work here: