Hello! Docker has become a buzzword. Don’t know what it is? Read on.
Over the last two decades, virtualisation has become a prevalent tech in the industry. Virtual machines are a way to utilise the underlying machine hardware more efficiently. Virtual Machines use hypervisors like VM-ware, which split the resources of the server making for more efficient use. Its most important contribution is arguably the decoupling of applications from hardware and from operating systems. This allows applications to be mobilised across servers, data centers, and even onto the cloud. Containers, as implemented by Docker provide take this mobility to a new level.
Docker is a linux container technology that lets us package our applications and everything it needs to execute in one standard format.
Sounds like a Virtual machine? Well it is very similar, the difference is that:
Docker containers virtualise the operating system kernel - not the hardware itself- to create containers. Every docker container has it’s own file system, and the containers have the same function and a lot of the same qualities as traditional virtual machines.
When using docker for virtualisation you don’t have to install an operating system for every application you want to run. Virtual machines tend to be much larger than Docker containers, which focuses on the application or a particular instance.
Docker is so fast and lightweight because it uses the underlying operating system kernel to do containerisation. Therefore it can only make Windows-based containers from a Windows OS, Linux from a Linux OS, etc. Docker uses a layered file system, which starts with a Linux kernel on which distributions are layered and then apps on the distros. LEGO?!
The containers are isolated, secure, and lightweight. A single container can be moved around easily onto various cloud platforms like AWS or Azure and local machines like yours and mine. They have their own OS, CPU processes, memory and all the dependencies and settings needed for a given application to work inside the docker container.
For developers, this is a big deal. A developer can write their code deploy it in a Docker container and know that it works… everywhere. Finally, Docker also provides an excellent method for companies to provide microservices with their apps.
If you enjoyed this content, below is a list of resources to related articles, videos and wiki info. Especially useful are resources number 1 and 6.
Sources and References:
- Beth Schofield Full Stack Dev — What in the world is containerisation?
- Red Hat — What is Virtualisation?
- Stratoscale.com — Are Docker containers the future of virtualisation?
- Ilearnedhowto — Layered filesystem
- Wiki — Hypervisors
- NetworkChuck — You need to Learn Docker RIGHT NOW!! // Docker Container 101
- Wiki — Microservices