Docker is a set of the platform as service products that use OS-level virtualization to deliver software in packages called containers. Containers are isolated from one another and bundle their own software, libraries, and configuration files; they can communicate with each other through well-defined channels.
While working on a project for FightPandemics I was introduced to Docker as a platform to work/test/create on. I must say, I am still learning about the power Docker has, but as far I am, this application is not disappointing! Let me explain:
Docker is a tool designed to make it easier to create, deploy, and run applications by using containers. Containers allow a developer to package up an application with all of the parts it needs, such as libraries and other dependencies, and ship it all out as one package.
While searching for information about Docker I found hilarious but totally making sense metaphor:
“House represents a single server (or even a virtual machine). It has all the stuff it needs to function. Hardware, operating system, middleware, and your application(s). Think of the hardware and operating system as the plumbing, electrical wiring, etc. The other stuff like rooms, furniture/appliances can be viewed as your middleware and apps.
An apartment building, on the other hand, is like a collection of (Docker) containers. Each apartment unit, which corresponds to a single “container” only has the middleware and application(s) (i.e. your rooms, furniture, appliances). The collection of containers all share the underlying plumbing and electricals (i.e. The hardware and operating system).
As you can imagine, this set up makes it faster to spin up new containers compared to starting up a virtual machine.” — Jay Dominic Sto. Tomas, Application Architect / Cloud Practice Lead at IBM
Many internet sources are convincing that knowing and having experience in using Docker is crucial in 2021 for developers. Base on freeCodeCamp there are many advantages of using Docker, here are some of them:
- Docker supports multiple applications with different application requirements and dependencies, to be hosted together on the same host, as long as they have the same operating system requirements.
- Storage Optimized. A large number of applications can be hosted on the same host, as containers are usually a few megabytes in size and consume very little disk space.
- Robustness. A container does not have an operating system installed on it. Thus, it consumes very little memory in comparison to a virtual machine (which would have a complete operating system installed and running on it). This also reduces the bootup time to just a few seconds, as compared to a couple of minutes required to boot up a virtual machine.
- Reduces costs. Docker is less demanding when it comes to the hardware required to run it.
I wasn’t able to find too many Disadvantages of using Docker, I believe the reason is that there aren’t many. Here is what I have found:
- Applications with different operating system requirements cannot be hosted together on the same Docker Host.
- Do Not Use Docker if You Prioritize Security.
That’s all for now, stay tuned !