Container service is not new, it was built around ten years ago in Linux environment also known as Linux container (LXC). But today, docker is most popular and has become synonymous to containers. So before talking about some container technologies like Docker, Kubernetes, we have to understand what container service is, and what is the difference between VMs and Container Technologies.
What is Container Technology?
It is a solution to a problem to run your application/software reliably when moving from one computing environment to another environment having the same type of kernel. This could either be from staging to the production environment or from physical machine to virtual machine in a cloud. It wraps up a piece of software in a complete file system that contains everything it needs to run.
In container technologies, each containerized application, run on a single operating system and shares kernel with the other container, which makes containers incredibly lightweight. Shared part of the kernel are read only; every container has its own mount point for writing purpose. This means every container is isolated (Isolate process, network, and file system) from other.
Difference Between Containers and VMs.
A container is not VM, it’s just a process which has its own namespaces. VMs run entire operating system whereas each container runs a single process.
In a larger infrastructure, running VMs means probably running many duplicate instances having the same type of OS which may cause overhead to your host machine. As containers are lightweight compared to VMs, we can run around 10 to 11 times as many containers as VMs on the same hardware.
|Building Image Time||Short (minutes)||Long (10+ minutes)|
|Hosted Number||On 1 machine you can run 15 containers||On 1 machine you can run few VM’s (2-3)|
|Deployment Tools||Kubernetes, Docker Swarm, Mesos|
|Size||100Mb +||1 Gb +|
Benefits of containerization
- Improves scalability and lower cost: containerization increase scalability from 10 to 100 times as compared to VMs environment, so it also helps in reducing cost.
- No more hypervisors
- Tools like Docker, allows us to move applications freely to, from, and between Linux-based cloud environments. Using containerization, you get much closer to achieve 100% utilization of cloud instance, by helping our cloud environment efficiency to deploy multiple containerized applications on to a single cloud instance.
Why do we need to adopt container technologies?
- Easy and Lightweight Way: Container is fast, it relies on copy‐on‐write Model.
- Accelerated Development Process: Aims to reduce the cycle time between code being written and code being tested, deployed and used.
- Empower Developer Creativity: Developers can use the best language and tools for their application service without worrying about causing conflict issues.
- Encourage Service Oriented Architecture: It recommends that each container runs a single application or Process.
- Eliminate Environment Inconsistencies: By packaging up the application with its configs and dependencies together and shipping as a container, the application will always work as designed locally, on another machine, in test or production. No more worries about having to install the same configs into a different environment.
Today, there are many orchestration tools like Kubernetes, Docker Swarm, if we talk about AWS it also has its own managed services known as Elastic container services which make DevOps life easier in building and managing containerized infrastructure.
Some of the key features of Containerized Orchestration Tools:
- We can do automated deployment
- We can move test environment to production in just one click
- Scale your application up and down with single command
- Automated rollbacks and backups
- Load balancing, service healing and much more
I hope this blog will give you some idea of container technologies, and some confidence over moving your current infrastructure to containers. If you want to set up your infrastructure using any of the orchestration tools you may refer the links added below.