8月10日、Dockerに関するビデオコースがSlurmで開始されました。このコースでは、基本的な抽象化からネットワークパラメータまで、Dockerを完全に分析します。
この記事では、Dockerの歴史とその主な抽象化(Image、Cli、Dockerfile)について説明します。この講義は初心者を対象としているため、経験豊富なユーザーが興味を持つことはほとんどありません。血も、付録も、深いダイビングもありません。非常に基本的です。

Dockerとは
WikipediaのDockerの定義を見てみましょう。
Dockerは、コンテナ化された環境でのアプリケーションの展開と管理を自動化するためのソフトウェアです。
この定義から明らかなことは何もありません。「コンテナ化対応環境」が何を意味するのかは特に不明です。理解するために、過去に戻りましょう。私が従来「モノリシック時代」と呼んでいた時代から始めましょう。
モノリシック時代
— 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, .