Qu'est-ce que Docker: une brève histoire et des abstractions de base

Le 10 août, un cours vidéo sur Docker a débuté dans Slurm , dans lequel nous l'analysons en entier - des abstractions de base aux paramètres réseau.



Dans cet article, nous parlerons de l'histoire de Docker et de ses principales abstractions: Image, Cli, Dockerfile. La conférence est conçue pour les débutants, il est donc peu probable qu'elle intéresse les utilisateurs expérimentés. Il n'y aura ni sang, ni appendice, ni plongée profonde. Les bases mêmes.





Qu'est-ce que Docker



Jetons un coup d'œil à la définition de Docker de Wikipedia.



Docker est un logiciel permettant d'automatiser le déploiement et la gestion des applications dans des environnements conteneurisés.

Rien ne ressort de cette définition. Il est particulièrement difficile de savoir ce que signifient les «environnements activés par conteneurisation». Pour comprendre, revenons au passé. Commençons par l'époque que j'appelle conventionnellement «l'ère monolithique».



Ère monolithique



— 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 :



  1. Docker Daemon — Container Engine; .
  2. Docker CLI — Docker.
  3. Dockerfile — , .
  4. Image — , .
  5. Container.
  6. 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, .




All Articles