What is Docker ?
Docker is a free and open platform for building, shipping, and running apps. Docker allows you to decouple your applications from your infrastructure, allowing you to quickly deliver software. You can manage your infrastructure the same way you manage your applications with Docker. By utilizing Docker’s methodologies for quickly shipping, testing, and deploying code, You can shorten the time between writing code and putting it into production.
History
The software that became Docker began as a project at dotCloud, a French company. Engineers at dotCloud used features baked into the Linux kernel, such as LXC and cgroups, to aid in the development of the company’s hosting infrastructure.
Docker Architecture
Docker is built on a client-server model. The Docker client communicates with the Docker daemon, which handles the construction, execution, and distribution of your Docker containers. You can run the Docker client and daemon on the same machine, or you can connect a Docker client to a Docker daemon that is located elsewhere. A REST API, UNIX sockets, or a network interface are used by the Docker client and daemon to communicate.
Docker Compose is another Docker client that allows you to work with applications made up of multiple containers.
Docker Objects
You create and use images, containers, networks, volumes, plugins, and other objects when you use Docker. This section provides a quick overview of a few of those items.
- Images
- Containers
- Local daemons
- Volumes
- Networks
- Swarm nodes
- Swarm services
Advantages of Docker
- Flexibility
- Cost-effectiveness with Fast Deployment
- Mobility — Ability to Run Anywhere
- Collaboration, Modularity and Scaling
Disadvantages of Docker
- Containers don’t run at bare-metal speeds
- The container ecosystem is fractured
- Persistent data storage is complicated.
- Graphical applications don’t work well.
- Not all applications benefit from containers