Docker is a tool designed to make it easier to create, deploy, and run applications using containers. Containers allow a developer to package an application with all the parts it needs, such as libraries and other dependencies, and send them all as a single package.
Docker is a service running on the host operating system. Currently it only works on Linux because it depends on a number of Linux kernel features, but there are several ways to run Docker on MacOS and Windows as well.
Docker containeris an open source software development platform. Its main benefit is that they are portable between any system running applications on the Linux operating system.
Docker Hub – a cloud-based recording service that allows you to connect to code repo, create and test images, store manually transmitted images, and connect to Docker Cloud so you can deploy them to your hosts.
Let's say you need to create an app. This could be the next Facebook, Pandora, Amazon, Youtube, Spotify. To make this app public, you need a place to host it.
In the past, you would have to create your own computer and set up a special web service called " server ", which is basically a computer dedicated to hosting websites or web services. The other option would be to distribute this app to hosting companies such as 1&1, GoDaddy, Geocity, etc.
Then came the age of the cloud. Unlike coWeb hosting services, a company like Amazon Web Service (AWS) has adopted a concept called "virtualization", when it comes to hosting your application through a range of servers — its own " data centers "; this means that hardware resources can be further fragmented through software functionality and can more optimally deliver resources to customers who need them.
Therefore, " cloud computing " is known as " auxiliary computing " because instead of setting up the entire server for your own use, you only pay for the services you use. This is usually more cost-effective for both yourself and the hosting company, not to mention more optimized for performance.
But even traditional cloud computing can't avoid one thing: heavy OS usage. In this case, the operating systems referenced are Microsoft Windows, Linux (RHEL, Ubuntu, Fedora, etc.) and MacOS. These operating systems are large in size andcan easily exceed 1 Gigabyte as an " Operating system image".
However, your application may initially only have a size of about 300 Megabytes. So why would you want a 1 GB+ size "virtual machine" that is a virtualized environment as a result ofvirtualizationwhen your application is much smaller than that?
That's where the concept of "container" comes into play to fix it. Here's how the Docker does it. Instead of hosting an operating system, each application can share some common resources, and as shown below there is something called a "docker engine" that sits on top of an Operating System.
As you can see from the figure above, you can visually observe how the app numberdecreases so much with the use of acontainer. In a way, this is a very simple solution, nothing more than adding another layer between the operating system and applications to optimize resource usage and reduce the need for redundant operating systems.
But this is a breakthrough for application development, because this level of abstraction is exactly what enterprise companies and individual developers need — less hassle to "provide" giant virtual machines, but to get the minimum containers needed to host their applications.
The result of using a Docker is that the application can be deployed or deployed faster, started and stopped faster, moved to another image faster , processing and doing many things faster.