Dockerとは:簡単な歴史と基本的な抽象化

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 :



  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