From e3be92ec600cad055a8bf1354eb50c2854c43663 Mon Sep 17 00:00:00 2001 From: Vladimir Protsenko Date: Mon, 13 Nov 2023 06:40:39 +0000 Subject: [PATCH] Update docker lection, added habr history article --- .../lection.md | 37 ++++++++++++------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/module2/07_docker_containerization_basics/lection.md b/module2/07_docker_containerization_basics/lection.md index 210e130..bb5b5d1 100644 --- a/module2/07_docker_containerization_basics/lection.md +++ b/module2/07_docker_containerization_basics/lection.md @@ -16,33 +16,42 @@ Docker это самый известный инструмент, который ## Основные механизмы работы Docker -Как вы уже знаете, в контейнерном механизме используется несколько средств ядра, которые необходимых для изоляции процессов приложений. - ### 1. Функции ядра -#### 1.1. Пространства имён +В контейнеризации используется несколько технологий ядра Linux, необходимых для обеспечения изоляции и управления контейнерами. + -Пространства имён изолируют контейнерные процессы с точки зрения нескольких функций операционной системы, включая монтирование файловой системы, управление процессами и сетевое взаимодействие. +#### 1.1. Пространства имён (Namespaces) -Например, пространство имён команды `mount` отображает процессы с помощью индивидуального представления иерархии файловой системы. Это аналогично системному вызову `chroot`, который необратимо устанавливает видимый процессу корневой каталог и тем самым отключает доступ к файлам и каталогам хоста, расположенным выше уровня `chroot`. +Namespaces - технология ядра Linux, разработанная в достаточно далёком 2002 году. Docker использует namespaces, такие как PID (Process ID), Network и Mount, для создания изолированных пространств имён. Пространства имён изолируют контейнерные процессы с точки зрения нескольких функций операционной системы, включая монтирование файловой системы, управление процессами и сетевое взаимодействие. + +Например, с использованием PID namespaces каждый контейнер видит только свои процессы, что обеспечивает изоляцию процессов между контейнерами. Пространство имён команды `mount` отображает процессы с помощью индивидуального представления иерархии файловой системы. Это аналогично системному вызову `chroot`, который необратимо устанавливает видимый процессу корневой каталог и тем самым отключает доступ к файлам и каталогам хоста, расположенным выше уровня `chroot`. Контейнеры могут работать на разных уровнях интеграции с операционной системой хоста в зависимости от того, как эти пространства имён были настроены. -#### 1.2. Контрольные группы +#### 1.2. Контрольные группы (Cgroups) + +Cgroups (Control Groups) - технология, разработанная внутри компании Google еще в 2006 году. Контрольные группы ограничивают использование системных ресурсов и определяют приоритетность одних процессов над другими. Контрольные группы препятствуют процессам контейнеров, выходящим из под контроля, использовать всю память и всё доступное время процессора. Это позволяет предотвратить «голодание» ресурсов и обеспечить справедливое распределение мощностей между контейнерами. -Контрольные группы ограничивают использование системных ресурсов и определяют приоритетность одних процессов над другими. Контрольные группы препятствуют процессам контейнеров, выходящим из под контроля, использовать вс. память и всё доступное время процессора. +#### 1.3. Слоистые файловые системы (Union File Systems) -#### 1.3. Функциональные возможности +Docker использует «слоистые» файловые системы, такие как AUFS, OverlayFS и Overlay2, чтобы создавать легковесные и эффективные образы контейнеров. Это возможно благодаря тому, что они разделяют общие файлы между собой, экономя дисковое пространство. + + +#### 1.4. Функциональные возможности (Capabilities) Функциональные возможности позволяют процессам выполнять определённые чувствительные операции с ядром и системные вызовы. Например, процесс может иметь возможность изменять права собственности на файл или устанавливать системное время. -#### 1.4. Режим защищённых вычислений +Ядро Linux предоставляет разные возможности (capabilities) для выполнения привилегированных действий. Docker позволяет настраивать набор возможностей, доступных контейнеру, для более тонкой настройки безопасности. + +#### 1.5. Режим защищённых вычислений (Seccomp) + +Для повышения безопасности Docker может использовать Seccomp. Он ограничивает доступ контейнера к системным вызовам, что позволяет уменьшить поверхность атаки и предотвратить выполнение опасных операций. Он обеспечивает более детальный контроль, чем функциональные возможности. -Режим защищённых вычислений ограничивает доступ к защищённым вызовам. Он обеспечивает более детальный контроль, чем функциональные возможности. ### 2. Сеть -Для обеспечение работы по сети используются такие технологии как: +Для обеспечения работы по сети используются такие технологии как: - встроенные в ядро программные L2 свичи `Linux Bridges`, - механизмы сетевого экрана `netfilter` NAT (преобразование сетевых адресов) и Port Forwarding (проброс портов), - опционально правила SELinux/AppArmor. @@ -67,7 +76,7 @@ Docker это самый известный инструмент, который Docker Hub - это общедоступная служба реестра, поддерживаемая компанией Docker, Inc. В ней содержатся образы многих дистрибутивов, которые вы можете взять в качестве основы для своего образа, и проектов с открытым исходным кодом. -В вашей компании вы можете поднять собственный реестр на основе одного из общедоступных образов реестров. При выборе образа реестра для производственной среды нужно учесть ряд требований к хранилищу данных, к аутентификации и авторизации, и к требованиям выдвигаемым другими задача обслуживания. +В вашей компании вы можете поднять собственный реестр на основе одной из общедоступных реализаций реестров, в том числе поставляемых в виде докер образа. При выборе образа реестра для производственной среды нужно учесть ряд требований к хранилищу данных, к аутентификации и авторизации, и к требованиям выдвигаемым другими задачам обслуживания. ### 5. Механизмы обеспечения персистентности в Docker @@ -79,11 +88,11 @@ Docker реализует три механизма обеспечения по Docker также поддерживает возможность монтирования локальной директории в контейнер. -Все эти возможности, кроме обеспечения персистентности при хранении данных, также обеспечивают более высокую производительность при записи в файловую \ -систему контейнера, по сравнению с верхним слоем `UnionFS`, доступным на запись и чтение. +Все эти возможности, кроме обеспечения персистентности при хранении данных, также обеспечивают более высокую производительность при записи в файловую систему контейнера, по сравнению с верхним слоем `UnionFS`, доступным на запись и чтение. ## Релевантные источники - Nemeth E. et al. UNIX and Linux system administration handbook. Chapter 25. - https://containerd.io/ - https://github.com/moby/moby/blob/master/libnetwork/docs/design.md - https://github.com/containernetworking/cni +- https://habr.com/ru/companies/yandex_praktikum/articles/760076/