Update docker lection, added habr history article

pull/3/head
Vladimir Protsenko 1 year ago
parent d084d5a034
commit e3be92ec60

@ -16,33 +16,42 @@ Docker это самый известный инструмент, который
## Основные механизмы работы Docker ## Основные механизмы работы Docker
Как вы уже знаете, в контейнерном механизме используется несколько средств ядра, которые необходимых для изоляции процессов приложений.
### 1. Функции ядра ### 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. Сеть ### 2. Сеть
Для обеспечение работы по сети используются такие технологии как: Для обеспечения работы по сети используются такие технологии как:
- встроенные в ядро программные L2 свичи `Linux Bridges`, - встроенные в ядро программные L2 свичи `Linux Bridges`,
- механизмы сетевого экрана `netfilter` NAT (преобразование сетевых адресов) и Port Forwarding (проброс портов), - механизмы сетевого экрана `netfilter` NAT (преобразование сетевых адресов) и Port Forwarding (проброс портов),
- опционально правила SELinux/AppArmor. - опционально правила SELinux/AppArmor.
@ -67,7 +76,7 @@ Docker это самый известный инструмент, который
Docker Hub - это общедоступная служба реестра, поддерживаемая компанией Docker, Inc. В ней содержатся образы многих дистрибутивов, которые вы можете взять в качестве основы для своего образа, и проектов с открытым исходным кодом. Docker Hub - это общедоступная служба реестра, поддерживаемая компанией Docker, Inc. В ней содержатся образы многих дистрибутивов, которые вы можете взять в качестве основы для своего образа, и проектов с открытым исходным кодом.
В вашей компании вы можете поднять собственный реестр на основе одного из общедоступных образов реестров. При выборе образа реестра для производственной среды нужно учесть ряд требований к хранилищу данных, к аутентификации и авторизации, и к требованиям выдвигаемым другими задача обслуживания. В вашей компании вы можете поднять собственный реестр на основе одной из общедоступных реализаций реестров, в том числе поставляемых в виде докер образа. При выборе образа реестра для производственной среды нужно учесть ряд требований к хранилищу данных, к аутентификации и авторизации, и к требованиям выдвигаемым другими задачам обслуживания.
### 5. Механизмы обеспечения персистентности в Docker ### 5. Механизмы обеспечения персистентности в Docker
@ -79,11 +88,11 @@ Docker реализует три механизма обеспечения по
Docker также поддерживает возможность монтирования локальной директории в контейнер. Docker также поддерживает возможность монтирования локальной директории в контейнер.
Все эти возможности, кроме обеспечения персистентности при хранении данных, также обеспечивают более высокую производительность при записи в файловую \ Все эти возможности, кроме обеспечения персистентности при хранении данных, также обеспечивают более высокую производительность при записи в файловую систему контейнера, по сравнению с верхним слоем `UnionFS`, доступным на запись и чтение.
систему контейнера, по сравнению с верхним слоем `UnionFS`, доступным на запись и чтение.
## Релевантные источники ## Релевантные источники
- Nemeth E. et al. UNIX and Linux system administration handbook. Chapter 25. - Nemeth E. et al. UNIX and Linux system administration handbook. Chapter 25.
- https://containerd.io/ - https://containerd.io/
- https://github.com/moby/moby/blob/master/libnetwork/docs/design.md - https://github.com/moby/moby/blob/master/libnetwork/docs/design.md
- https://github.com/containernetworking/cni - https://github.com/containernetworking/cni
- https://habr.com/ru/companies/yandex_praktikum/articles/760076/

Loading…
Cancel
Save