Am 10. August startete in Slurm ein Videokurs über Docker , in dem wir ihn vollständig analysieren - von grundlegenden Abstraktionen bis hin zu Netzwerkparametern.
In diesem Artikel werden wir über die Geschichte von Docker und seine Hauptabstraktionen sprechen: Image, Cli, Dockerfile. Die Vorlesung richtet sich an Anfänger, daher ist es unwahrscheinlich, dass sie für erfahrene Benutzer von Interesse ist. Es wird kein Blut, keinen Anhang und kein Tieftauchen geben. Die Grundlagen.

Was ist Docker?
Werfen wir einen Blick auf die Definition von Docker aus Wikipedia.
Docker ist eine Software zur Automatisierung der Bereitstellung und Verwaltung von Anwendungen in Containerumgebungen.
Aus dieser Definition geht nichts hervor. Es ist besonders unklar, was dies in containerisierten Umgebungen bedeutet. Um es herauszufinden, gehen wir zurück in die Vergangenheit. Beginnen wir mit der Ära, die ich üblicherweise als "monolithische Ära" bezeichne.
Monolithische Ära
— 2000-, , . . , . :
Pets — . , , , . : , .
: VMware, VirtualBox, Hyper-V, Qemu KVM . . , . , . — . — , , Nginx, Apache, MySQL. , . , . , .
OpenVZ, Systemd-nspawn, LXC. — LXC (Linux Containers).
LXC — Linux . LXC , .
LXC . ?

: , . - , .
.
, .

«» — , - . , .
, , . , Container Engine, . , , .
, , — Namespaces Control Groups.
Namespaces: PID, Networking, Mount User. , .
PID Namespace . , , PID Namespace, , PID 1. PID 1 — systemd init. , namespace, PID 1.
Networking Namespace / . Mount — . User — .
Control Groups: Memory, CPU, IOPS, Network — 12 . Cgroups («C-»).
Control Groups . Control Groups , - .
, : Capabilities, Copy-on-write .
Capabilities — , , . . , root , . : capabilities Time Capsule, . , .
Copy-on-write Docker, .
Docker Cgroups v2, Cgroups v1.
.
, . , :
- : OpenVZ , , , ;
- , . , , . .
, .
, :
- — .
- . .
- , — , .
- .
, pets vs cattle? , cattle — . — . 100 , 100 . - 2-3 . . : , . .
2014-2015 Docker — , .
Docker . Docker , , , .
Docker- , . Docker . , : , , . Docker . Docker- , , .
. - , Docker , Linux , . , « , Docker — , Linux ».
, , Docker , , .
— PID namespace. namespace - , PID 1. PID, namespace, . , Nginx, PID 1 (-). PID 12623. , .
— Cgroups. Cgroups , . , memory accounting: , , . , , , . , , Docker, .
. . , . Docker - , , , , , . - nf_conntrack, .
Docker
Docker :
- Docker Daemon — Container Engine; .
- Docker CLI — Docker.
- Dockerfile — , .
- Image — , .
- Container.
- Docker registry — .
:

Docker_host Docker daemon, . Client, : , , . Docker daemon registry . Docker- ( -), TCP .
.
Docker daemon () — , -: , , . « », .
Docker CLI — Docker, . , , .
:
docker ps — , Docker-.
docker images — , .
docker search <> — registry.
docker pull <> — registry .
docker build <</path/to/dir>> — .
docker run <> — .
docker rm <> — .
docker logs <> —
docker start/stop/restart <> —
, , 70% Docker .
Dockerfile — . — . .

Dockerfile: , — . , ( Dockerfile), Image.
, , . : « » — . « » — , . . Dockerfile - — "python" "main.py", - , — , .
Image — , . Docker ( deb rpm-), image — rpm-. yum install , , , . : , Docker registry ( yum, ), image SHA-256, .
Image Dockerfile. Dockerfile . .
Docker registry — Docker. , Docker — dockerhub. , Docker registry.
Container — , . Dockerfile , . , . — . , , Docker.
« — » PID Namespace. Namespace PID 1, , . : , , . Best Practices, .
: « Docker».
: , Kubernetes, Southbridge, .