What is Docker
"Build, Ship, and Run Any App, Anywhere"
An open-source project that automates the deployment of software applications inside containers by providing an additional layer of abstraction and automation of OS-level virtualization on Linux.
In simple, Docker is a tool that allows developers, sys-admins etc. to deploy applications in a sandbox (which in docker world we call it containers) to run over the host operating system.
Docker makes running our app inside of containers really easy where containers are fast lightweight virtual machines.
A layman Definition, Docker platform which packages a service into a unit(image) say standardized unit, and everything is included in that unit to make that service run.
Community Edition (CE):-
- Open Source
- Lots of Contributors
- Quick release cycle
Enterprise Edition (EE):-
- Slower release cycle
- Additional features
- Official support
Before learning more about Docker, lets talk about little bit about container, image and Dockerfile :
Container - A container is a running instance of an image.
Image - An image is a unit that contains everything ( the code, libraries, environments variables and configuration files) that our service requires to run.
Dockerfile - Just assume it as a blueprint for creating a Docker images, it can inherit from other containers, define what software to install and what commands to run.
* Linux * Mac * Windows * Windows Server 2016
Docker uses a client-server architecture. The Docker client talks to the Docker daemon, which does the heavy lifting of building, running, and distributing your Docker containers. The Docker client and daemon can run on the same system, or you can connect a Docker client to a remote Docker daemon. The Docker client and daemon communicate using a REST API, over UNIX sockets or a network interface.
Click for animated view of Docker Architecture
Docker Registry is a hub where you can download/pull images public, private, official and images by people like us.