63 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
---
 | 
						|
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](Docker_architecture.md).
 |