2. 2
Контейнеры и виртуализация
● Разные концепции
● Виртуализация – вертикальное абстрагирование
● Контейнеры – горизонтальное разбиение
● Контейнеры используются для замены виртуализации там, где они справляются
лучше:
● Горизонтальная изоляция приложений
● Делегирование окружений
● “Виртуализация приложений”
● Максимальная плотность
● Зачастую контейнеры используются поверх виртуализации
5. 5
Control Groups (CGroups)
● Десять групп
● Основные группы:
● cpu
● memory
● blkio
● systemctl
● net-prio
● cgconfig (устарела) libcgroup будет удалена
6. 6
SELinux – реализация MAC для GNU/Linux
● Интегрирована в ядро
● LSM и расширенные атрибуты
● Для чего использовать:
● Запуск программ с минимальными привилегиями
● Защита от эксплоитов
● Защита пользовательских данных
● Для чего не предназначена:
● Аудит кода
● Шифрование
● Обновления
7. 7
Docker – изменяет правила игры
● Docker CLI интересен, но это не столь значительное
нововведение. Технологии, позволяющие создавать
контейнеры в GNU/Linux > 10 лет
● Docker как формат упаковки и распространения приложений
– вот что важно!
8. 8
Docker - понятия
● Контейнер – запущенное из образа приложение
● Образ – статический снимок конфигурации контейнера.
Образы могут зависить от других образов. Образ всегда r/o.
Изменения сохраняются только созданием образа поверх
образа.
● Образ платформы – не имеющий родительских образов.
Содержит базовые библиотеки и утилиты для запуска
приложений.
9. 9
Docker – упаковка приложений
● API и формат образов:
● Перемещаемость контейнеров между хостами
● Контроль версий и переиспользование компонентов
● Удаленный репозиторий для образов
● Dockerfile – шаблон конфигурации для сборки образов
10. 10
Контейнеры в Linux Вариант 1: Host Containers
Host Containers
Идентичные
контейнеры
Host
Linux
● В Linux хост делится на
защищенные контейнеры
● В каждом контейнере
запускается один код
пространства пользователя
● За : Обновления применяются
просто
● Против : Ограничено только
Одной средой исполнения
11. 11
Контейнеры в Linux Вариант 2:
Image-based Containers
Image-based
Containers
Разные контейнеры
Формат Docker
● Docker предоставляет формат
образов для распространения
программного обеспечения.
● Пакеты самого приложения и
все зависимости для внедрения
приложения в контейнерах
● Docker включает в себя среду
исполнения для приложений
12. 12
Возможные ограничения Docker
● Возможно не достаточно зрело для mission-
critical
● Возможно не достаточно безопасно
● Достаточно быстро меняется
● Приложение – один процесс
13. 13
Примеры реализаций
● Операционная система
● Linux общего назначения
● CoreOS
● Atomic
● VMware Photon
● Управление
● Cockpit
● Kubernetes
● IaaS – что угодно (OpenStack, AWS.. Google.)