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 :
- 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, .