“Docker is hotter than hot because it makes it possible to get far more apps running on the same old servers and it also makes it very easy to package and ship programs.” — by Steven J. Vaughan-Nichols for Linux and Open Source

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:

Here are some great resources :
Docker Tutorial for beginners;
12 Interesting Docker Project Ideas For Beginners;
DockerCon Live 2021 (27 MAY 2021);
Well written docker documentation;

That’s all for now, stay tuned !