什么是Docker:简要历史和基本抽象

8月10日,在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 :



  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