In our world today, technology has enabled humans to reach new levels and new heights. From simple calculating machines, to burn-to-metal servers, all the way to complex cloud hosted systems, indeed, humans have come a long way in the field of Information Technology.
As a matter of fact, these new innovations gave rise to new methodologies that have given people the potential to do more and achieve more. With this continuous improvement, people are learning to do things more efficiently thereby saving more time, effort, and resources. The old routine ways are constantly improved. A lot of the manual and mindless tasks are being automated. People can use computers to perform complex tasks that in the past were never thought to be possible.
Nowadays, we have systems that support voice recognition. We have systems that track our finances. We have systems that are Bluetooth-enabled and able to accurately measure body fat percentages. In today’s article, however, we will be talking about a term heard mostly in the field of DevOps: Containerization.
What is containerization?
Containerization is the process of packaging up or encapsulating one or more applications as an independent, executable package. A container is, therefore, a lightweight and efficient alternative to traditional virtual machines.
In simpler terms, this is like putting your application code into a packaged box where everything the application needs to start up and run is within this box.
See diagram below.
Instead of hosting your application on a virtual machine, you could instead choose to spin up a container.
Containers vs Virtual Machines
There are three main benefits from using containers. First, it can be operated effectively in the cloud as observed in cloud providers such as AWS and GCP. Second, code is easier to share because everything an application needs to run is already “packaged” within the container. Third, it is more cost effective because you may provision multiple containers within the same infrastructure. One disadvantage of containers is that it is difficult to monitor hundreds of containers if they are all running on the same system server.
What is docker?
When we hear about the word containerization, it is usually associated with Docker.
Docker is an open platform that runs on OS-level virtualization used to develop, deliver, and run software using containers. Docker is a tool that makes it easier to wrap up software – together with the entire contents of its apps or applications – and deploy it as one package.
How to set up docker:
- Install docker by following the steps indicated: https://docs.docker.com/docker-for-windows/install/
- Test your installation:
docker run hello-world
docker : Unable to find image ‘hello-world:latest’ locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
If you get the following message: “Hello from Docker!”
It means you have successfully installed docker. Happy coding!
Containers vs. Virtual Machines
Containers and virtual machines differ in many ways. The former allows the virtualization of one’s operating system to enable multiple applications to run under a single operating system instance. The latter enables hardware to run multiple OS instances. The very nature of containers –lightweight, process isolated, fast provisioning – allows it to be a very useful tool in streamlining the process of software development.
Get the latest insights on developer best practices, technologies and solutions for businesses here. Need help with Application development or other development services? Schedule a free consultation with us.