Docker
Docker is the leading, open-source, container platform for automating the deployment of applications as portable, self-sufficient containers that can run on the cloud or on-premises.
Docker packages software into standardized units called containers that have everything the software needs to run including libraries, system tools, code, and runtime. Using Docker, you can quickly deploy and scale applications into any environment and know your code will run.
Docker uses the resource isolation features of the Linux kernel (such as cgroups and kernel namespaces) and a union-capable file system (such as OverlayFS) to allow containers to run within a single Linux instance, avoiding the overhead of starting and maintaining virtual machines. Because Docker containers are lightweight, a single server or virtual machine can run several containers simultaneously.
The Docker software as a service offering consists of three components:
- Software: The Docker daemon, called dockerd, is a persistent process that manages Docker containers and handles container objects. The daemon listens for requests sent via the Docker Engine API. The Docker client program, called docker, provides a command-line interface that allows users to interact with Docker daemons.
- Objects: Docker objects are various entities used to assemble an application in Docker. The main classes of Docker objects are containers(standardized, encapsulated environment that runs applications), images(read-only template used to build containers), and services(allows containers to be scaled across multiple Docker daemons - swarm).
- Registries: A Docker registry is a repository for Docker images.
Tools for multi-container Docker applications:
- Docker Compose: It uses YAML files to configure the application’s services and performs the creation and start-up process of all the containers with a single command. The docker-compose CLI utility allows users to run commands on multiple containers at once, for example, building images, scaling containers, running containers that were stopped, and more.
- Docker Swarm: provides native clustering functionality for Docker containers, which turns a group of Docker engines into a single virtual Docker engine. The docker swarm CLI utility allows users to run Swarm containers, create discovery tokens, list nodes in the cluster, and more. The docker node CLI utility allows users to run various commands to manage nodes in a swarm, for example, listing the nodes in a swarm, updating nodes, and removing nodes from the swarm.
[Used docker for]
- zabbix
- grafana
- gitlab
- nextcloud
- graylog