54 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
---
 | 
						|
categories:
 | 
						|
  - DevOps
 | 
						|
tags: [docker, containerization]
 | 
						|
---
 | 
						|
 | 
						|
# Docker: general overview
 | 
						|
 | 
						|
> Docker is an ecosystem of tools for creating, running and transporting containers.
 | 
						|
 | 
						|
The main product of the Docker company is Docker Desktop - a UI for running containers however the actual `docker` software is free and open source.
 | 
						|
 | 
						|
Docker standardised the use of containers set up the open-source Open Container Initiative which is a convention agreed upon by the major tech companies. It codifies the following:
 | 
						|
 | 
						|
- Docker runtime specification
 | 
						|
- Docker image specification
 | 
						|
- Docker registry specification
 | 
						|
 | 
						|
## Main components
 | 
						|
 | 
						|
- **Docker Engine**
 | 
						|
  - The core component
 | 
						|
  - Exposes the Docker API and manages the entire workflow around creating, running and deploying containers
 | 
						|
- **Docker Client**
 | 
						|
  - The Docker CLI
 | 
						|
  - The primary means of interacting with the Docker Engine
 | 
						|
  - Provides commands for managing images, containers and other Docker objects
 | 
						|
- **Docker Compose**
 | 
						|
  - A tool for defining and running multi-container applications
 | 
						|
  - Define the configuration for all of the containers that make up the application in a single YAML file
 | 
						|
- **Docker Images**
 | 
						|
  - See below
 | 
						|
- **Docker Containers**
 | 
						|
  - See below
 | 
						|
- **Docker Registry**
 | 
						|
  - A centralised location where Docker iamges can be stored and shared
 | 
						|
  - DockerHub is the registry provided by Docker
 | 
						|
  - Organisations can set up their own private registries
 | 
						|
 | 
						|
## Docker images
 | 
						|
 | 
						|
An image is a blueprint that contains the instructions to build a container. It's an immutable snapshot of the file system and configuration of an application. Images can be easily shared between developers.
 | 
						|
 | 
						|
They are runnable packages that contain everything needed to run an application including the binaries, libraries, resources and other dependencies.
 | 
						|
 | 
						|
It does not contain an operating sytem but may include a particular Linux distribution.
 | 
						|
 | 
						|
## Docker containers
 | 
						|
 | 
						|
A container is a runnign instance of a Docker image. Multiple, identical containers can be launched from the same, single image.
 | 
						|
 | 
						|
## Docker architectural overview
 | 
						|
 | 
						|
See [Docker architecture](/DevOps/Docker/Docker_architecture.md).
 |