The Blue Whale a.k.a Docker

Azzahra Abraara
Portelier
Published in
5 min readDec 18, 2020
Docker
source: https://www.droptica.com/sites/droptica.com/files/styles/blog_banner_image/public/2018-08/docker_codeception-07.jpg?itok=LvsfLy4z

Do you know what Docker is? Or do you recognize the blue whale logo above? Most people who do not have IT backgrounds never heard of it. New programmer also feels like Docker is something that is not familiar. Ok, so what actually Docker is? Based on its official website,

“Docker is an open platform for developing, shipping, and running applications. Docker enables you to separate your applications from your infrastructure so you can deliver software quickly. With Docker, you can manage your infrastructure in the same ways you manage your applications. By taking advantage of Docker’s methodologies for shipping, testing, and deploying code quickly, you can significantly reduce the delay between writing code and running it in production.” — docs.docker.com

From the statement above, Docker is an open platform and an open-source to run your application easier using an isolated environment called a container. The developers can package up their application, inside the package can be the application’s dependencies and libraries. It can be deployed as one package. Later the package is stored in a container. The container is lightweight because based on its official website, it does not need the extra load of a hypervisor, but run directly within the host machine’s kernel.

Docker Architecture

A client-server architecture is used in Docker. The Docker client communicates to the Docker daemon, which the Docker daemon does the heavy lifting of building, running, and distributing your Docker containers. The Docker daemon and client can run on a similar system. You can do in a different way where a Docker client can be connected to a remote Docker daemon. Both of them talk using a REST API, through a network interface or UNIX sockets.

Docker Architecture
source: https://wiki.aquasec.com/download/attachments/2854889/Docker_Architecture.png?version=1&modificationDate=1520172700553&api=v2

Why Docker?

I have been thinking in my mind. Why do we use Docker? Why do we need this container? What is something special about it? These questions haunt me and I have to search more about this blue whale.

After I spent some times to search about Docker on the internet, there are several benefits if we use Docker in our project!

Based on this article, Docker has some benefits such as:

Docker enables more efficient use of system resources

Because Docker or its container needs less memory than a virtual machine, it reduces the cost to the company! It also starts up and stops more quickly because of the small memory.

Docker enables faster software delivery cycles

Docker containers make the production application more quickly because it makes us easy to put new versions of the software. It makes the blue/green deployments easy to implement too.

Docker enables application portability

Because Docker containers wrap up everything application need to run, they enable the application to be moved easily between environments. Anyone who has installed Docker run time on their devices can run the Docker containers (can be a public cloud instance or developer’s laptop).

Docker shines for microservices architecture

Microservices is one of the software patterns containers that make it easier, where applications are made from several loosely coupled components. So that it allows the users, to be modified separately.

When Do We Not Use Docker?

However, there are some conditions when you do not need to use Docker on your application. According to this article, you do not have to use Docker if you:

Develop a Graphical User Interface (GUI) Application

Docker does not prioritize GUI applications. It depends on a specific case and application to support the GUI. If your application requires rich UI, Docker does not suit you. Docker is chiefly preferred for isolated containers with console-based applications.

Want to Light Up Development and Debugging

You have to do some extra setup to code your app in Docker. Furthermore, you have to configure logs output and set up debugging ports with Docker debugging. You may also need to map ports for your applications and services in containers. So, if you have a simple app, it just adds unnecessary complexity.

Need to Use Different Operating Systems or Kernels

If you use different OS or Kernels to develop your application, better not to use Docker. Because for example, if your application is designed to run in a Docker container on Linux, then it cannot run in Windows, and vice versa. Or you cannot develop the application on Windows, and the production runs on Linux using Docker.

You Have a Lot of Valuable Data to Store

Docker is designed to put all of the created Docker files into a container and saved on a writable container later. It may take some efforts to retrieve the data from the container if a different process needs it. Besides that, the writable layer of a container is connected to the host machine which the container is running on. You cannot move the data easily if you want to move it into different places. Furthermore, once the container shuts down, all the data stored inside a container will be lost forever.

You have to think of ways to save your data somewhere else first. To keep data safe in Docker, you need to employ an additional tool — Docker Data Volumes. Yet, this solution is still quite clumsy and needs to be improved.

You are Looking for the Easiest Technology to Manage

Docker is being introduced in 2012. However, Docker is falling behind the advancement of technology. Furthermore, Docker offers quite poor monitoring options.

You can get a quick insight into some simple statistics. Yet, if you want to see some advanced monitoring features, Docker has nothing to offer.

Example of Docker
source: https://miro.medium.com/max/4640/1*DEadUBjAcVV0ocgXNEm8Tg.png

That is all for me! So, does your application need Docker? Or not? I hope this article will help you to know more about Docker. Thank you for reading my article until the end. Have a great day!🤠

--

--