Docker-Learning-Path: Fundamendal
Disclaimer
How many times you spent bunch of time by setting up your environment system of project like installing your PHP App the you should install OS, Web Server, Database, any libraries, plugins, additional configuration, .conf, .ini, etc?
Is it takes a long time, right? Then, imagine you’ll be installing it on 10+ devices with different region, specification & kernel. So, how could you measure your time management to finish it?
Last, when you are working with large team then you’ve to work with same tech-stack, specification and codebase simultaneously.
I totally agree, you’ll get headache.
So, come on. We already have the solution. This is pretty beautiful and helpful tool to help us in bundling and delivering our projects to any platforms as easy as easy as falling off a log.
About Docker
Docker is an open-source software platform. It is 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 which are required, such as libraries and other dependencies and ship it all out as one package. In this blog, we are going to discuss the Docker Components.
Docker Analogy
The philosophy behind Docker could be illustrated through this following simple analogy. In the modern transportation industry, materials have to be transported by different containers like trucks, trains, cranes, and ships. These materials come in different shapes, sizes and different storing requirements: sacks of sugar, milk cans, plants etc. Historically, it was a painful process depending on manual intervention at every transit point for loading and unloading.
It has changed with the modern seal container model. As they come in standard sizes and are manufactured with transportation in mind, all the relevant machineries designed to handle these with minimal human intervention. The additional benefit of sealed containers is that they can preserve the internal environment like temperature and humidity for sensitive goods. As a result, the transportation industry can stop worrying about the goods themselves and focus on delivering them from A to B.
In this exposure, I won’t tell you what are differences between Docker and Virtual Machine such as Virtual Box, VMWare etc. You are pretty easy to find it on others articles.
Docker Architecture
Let’s take a look to its architecture.
Docker Daemon ( dockerd ) is similar as a server to listen for Docker API requests and manages Docker objects such as images, containers, networks, and volumes. A daemon can also communicate with other daemons to manage Docker services.
Docker Image is a template that contains the application, and all the dependencies required to run that application on Docker. On the other hand, as stated earlier, a Docker Container is a logical entity.
Docker Container is a lightweight, standalone, executable package of software that includes everything needed to run an application: code, runtime, system tools, system libraries and settings.
Docker Client ( docker ) is the primary way that many Docker users interact with Docker. When you use commands such as docker run , the client sends these commands to dockerd (Docker Daemon) , which carries them out. The docker command uses the Docker API. The Docker client can communicate with more than one daemon.
Why Use Docker?
One of the great things about Docker is open source which is you could use to accomplish a task. The Docker engine can be useful for developers who need a lightweight, clean environment for testing, but without a need for complex configuration and orchestration.
Summary
As its Docker own motto: Build, Ship, Run.
- Build — Docker allows you to compose your application from micro-services, without worrying about inconsistencies between development and production environments, and without locking into any platform or language.
- Ship — Docker lets you design the entire cycle of application development, testing, and distribution, and manage it with a consistent user interface.
- Run — Docker offers you the ability to deploy scalable services securely and reliably on a wide variety of platforms.
Have fun swimming with the whales!