Qué es Docker: una breve historia y abstracciones básicas

El 10 de agosto, comenzó un curso en video sobre Docker en Slurm , en el que lo analizamos en su totalidad, desde abstracciones básicas hasta parámetros de red.



En este artículo, hablaremos sobre la historia de Docker y sus principales abstracciones: Image, Cli, Dockerfile. La conferencia está diseñada para principiantes, por lo que es poco probable que sea de interés para usuarios experimentados. No habrá sangre, apéndice ni inmersión profunda. Los mismos conceptos básicos.





Que es Docker



Echemos un vistazo a la definición de Docker de Wikipedia.



Docker es un software para automatizar la implementación y la gestión de aplicaciones en entornos en contenedores.

Nada queda claro en esta definición. No está especialmente claro qué significa "entornos habilitados para contenerización". Para entender, volvamos al pasado. Comencemos con la era que llamo convencionalmente la "era monolítica".



Era monolítica



— 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