VMs, Containers & Docker for noobies

Regardless if you’re a non-technical founder or a techie, you’ve probably at least heard about Docker, the world’s leading software container platform. For those who are confused right now, stay calm, I’ll explain everything in details in this blog article.

In my last post, I explained why the data centers’ virtualization is game-changer for startup founders. Having the possibility to increase your server power, performances, and storage at any time depending on your user demand, it offers you flexibility. That virtualization process is possible because of the new VMs (virtual machines) technologies. But what is the real link between VMs, containers, and Docker?

You’ll need to understand some fundamental concepts on containers to be able to compare them with VMs, and finally learn how Docker is the greatest container manager.
First, let’s start by understanding what VMs and containers really are.

 

Containers vs. VMs

Virtual Machine vs. Containers Diagram
Virtual Machine vs. Containers Diagram

Containers and VMs have similar purposes, to isolate an application and its dependencies (libraries & bins) into a self-contained unit that can run anywhere. Since both are built on virtual resources, they remove the need of physical hardware, and they both offer the same virtual advantages that we talked in the last blog post. The real difference between VMs and containers is in their architectural approach.

VMs
In simple words, a VM is just a virtual emulation of a real computer. Often referred as the “guest machine”, it runs on top of a real physical computer, referred as “host machine”. The guest machine behaves as its own unit, with its own resources, but from the outside, we know that it’s a VM. The resources (RAM, CPU, etc…) are provided to the guest machine by its host and can be divided between more than one VM. The fact that they behave like their own isolated unit means that they also carry an entire virtualized hardware stack – which means each VM also has their own separate OS (operating system).

Containers
Unlike VMs, containers provide operating-system-level virtualization by abstracting the “user space” – which means that every container is sharing the host system’s kernel with other containers. In simpler terms, containers look like VMs, but they remove the OS-guest level (as presented in the figure). Each container also gets his own isolated user space, but the way this architecture is built, it allows many containers to run on the same “guest-OS”. The OS-level is shared across all containers. That OS-level abstraction is what makes containers so lightweight and attractive for dev ops folks.

 

So … What is Docker then?

Docker is an open-source project that uses the containers principles. It uses Linux Kernel features to create containers on top of the OS. Despite what most people think, the container concept is not new at all. In an article published by The Register in mid-2014, it was claimed that Google runs over two billion containers per week.

So why Docker is now a buzz word and every developer on earth is in love with Docker?
Simple – Docker is one of the first company to make it ease of use. They offer many advantages like the speed, the modularity, and the scalability.

Last but not least, they have the cutest logo I ever saw!!!

The Docker whale

 

References

  1. https://prakhar.me/docker-curriculum/
  2. Footy ‘n’ Tech. (2013). Docker for Dummies. [online] Available at: https://footyntech.wordpress.com/2013/08/23/what-docker-is/ [Accessed 14 Jul. 2017].
  3. Rancher Labs. (2017). RancherOS: Fast, Ultra-lightweight Container OS | Rancher Labs. [online] Available at: http://rancher.com/rancher-os/ [Accessed 14 Jul. 2017].
  4. Social.technet.microsoft.com. (2017). Understanding Docker for Absolute Beginners – TechNet Articles – United States (English) – TechNet Wiki . [online] Available at: https://social.technet.microsoft.com/wiki/contents/articles/34082.understanding-docker-for-absolute-beginners.aspx [Accessed 14 Jul. 2017].
  5. freeCodeCamp. (2016). A Beginner-Friendly Introduction to Containers, VMs and Docker. [online] Available at: https://medium.freecodecamp.org/a-beginner-friendly-introduction-to-containers-vms-and-docker-79a9e3e119b [Accessed 14 Jul. 2017].
  6. HPE. (2017). A guide to Kubernetes, Mesosphere, and Docker Swarm. [online] Available at: https://insights.hpe.com/content/hpe-nxt/en/articles/2017/02/the-basics-explaining-kubernetes-mesosphere-and-docker-swarm.html [Accessed 14 Jul. 2017].
  7. YouTube. (2017). Learn Docker in 20 Minutes. [online] Available at: https://www.youtube.com/watch?v=wCTTHhehJbU [Accessed 14 Jul. 2017].
  8. YouTube. (2017). What is Docker? In 3 minutes. [online] Available at: https://www.youtube.com/watch?v=t9YuqwGYUUg [Accessed 14 Jul. 2017].
8+

Users who have LIKED this post:

  • avatar
  • avatar
  • avatar
  • avatar
  • avatar
  • avatar