Docker. Начало.

Когда впервые выполняется команда

ivan@ivan-XPS-9320:~$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
c1ec31eb5944: Already exists 
Digest: sha256:305243c734571da2d100c8c8b3c3167a098cab6049c9a5b066b6021a60fcb966
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

Docker ищет image локально, если он не скачан, то скачивает его из репозитория hub.docker.com, затем создает и запускает контейнер.

Контейнер запускается, выводит сообщение и останавливается, потому что программа внутри контейнера остановилась.

Программа, работающая внутри контейнера Docker, напрямую взаимодействует с ядром Linux. Docker не является технологией аппаратной виртуализации. Вместо этого он помогает использовать технологию контейнеризации, уже встроенную в ядро операционной системы.

Контейнеры это не виртуализация.

Docker использует Linux namespaces and cgroups. Namespaces и cgroups абстракция ОС Linux. Namespaces организует изоляцию процессов друг от друга. 

Cgroups это тоже функция ядра Linux, которая позволяет объединять процессы в группы, а затем можно ограничивать и отслеживать потребляемые ресурсы каждого типа (память, процессор и т. д.).

Другие namespace

PID namespace (Пространство имен PID) — идентификаторы процессов
UTS namespace (Пространство UTS) — доменные имена и имя хоста
MNT namespace (Пространство имен) — доступ к файловой системе и ее структуре
IPC namespace (Пространство имен IPC) — процесс коммуникации с оперативной памятью
NET namespace (Сетевое пространство имен) — сетевые доступы и структура сети
USR namespace (Пространство имен) — имена и идентификаторы пользователей
Chroot syscall — контролирует местоположение корневой файловой системы
CGRUPS — защита ресурсов
Drop Cap — Ограничения функций ОС
Security modules (Модули безопасности) — контроль доступа

Поделиться ссылкой: