In this Docker introduction article, we will talk about below topics.
What is Docker?
Docker is a program, made up of several services to provide a consistent way to develop, package, ship and run an application on almost any platform. We will discuss all of these services more in details later.
We all are aware of the statement when your colleague says, “it worked on my machine”, GOD knows why it is not working for you. Docker helps you make the app platform agnostic so that it runs on any platform.
Docker is more about managing your infrastructure, just the way you manage your applications. Docker provides a consistent way to package, ship and run your application across DTAP (Development, Testing, Acceptance, and Production) environment. In a simple sentence, you can package your application as a Docker image and run the same image in dev, test or even prod, which interns save a hale lot of time that you usually spend in configuration or installation of your app in all these environments.
How was Docker born?
Docker was originally an in-house project initiated by Docker Inc. (formerly dotCloud). It was based on the innovation of dotCloud’s multi-year cloud service technology and was open sourced in March 2013 under the Apache 2.0 license.
Docker has received great attention and support from the community since its inceptions and it is available on GitHub.
Docker uses Google’s Go language for development. Docker is based on the Linux kernel cgroup, namespace, and AUFS like Union FS and other technologies to encapsulate the process of isolation. The isolation environment that Docker creates is called a container.
Why Docker is popular?
Earlier, virtual machines were used to achieve resource isolations. Resource isolation is the core of resource management strategies. Say if you have a bare metal server with 32GB RAM and 8 Core processor, using resource isolation you want to make sure that Database server occupies 8Gb RAM & 2 Cores, App server – 16Gb RAM & 4 Cores and Nginx occupies the rest. Virtual machines are heavy and difficult to manage, Docker dominates that market because of its simplicity and lightweight nature.
- Hypervisors are used to manage Virtual machines
- A full copy of Guest OS is installed on top of the Host machine. These Guest os can be of few Gbs, where the hosted app is just of few Mbs.
- Heavyweight as explained above
- Difficult to monitor and time taking
- Docker engine takes care of running the image in an isolated runtime, docker container.
- The application only needs to be packed with its dependencies libraries.
- Much lightweight than Virtual Machines, and powerful at the same time
- Easy to manage, spinning up a container is just a matter of few commands and a few seconds.
Why use Docker?
Simply speaking, docker is almost an industry standard now, supported in all the popular Operating Systems. Docker is also available in all the major could platform like Google Cloud, AWS, IBM cloud, Alibaba Cloud, etc. This is due to the following reasons.
Efficient use of System resources
Docker container does not need additional virtualization layer, and a full guest OS running. This is why it utilizes resources better than traditional virtualization technology.
Faster startup time
Containerized applications can be started in few seconds, even in few mili seconds as it directly runs on the Host kernel.
Consistent Operating Environment
Docker image ensures a complete runtime in addition to your application, which makes it consistent to run on any Operating System.
Continuous Delivery and deployment
DevOps wants to configure from anywhere, Docker allows you to customize the images for CI (continuous integration), CD (continuous delivery) and deployment. We will discuss this in details in the Docker images section of this tutorial.
Painless Migration and maintenance
Docker ensures consistency, hence making the migration from system to system simple.
In this Docker Introduction section, I only gave you a theoretical understanding of the subject matter and might have left you with several questions uncleared. Continue to the next section of the tutorial to know about Docker Architecture.