ݺߣ

ݺߣShare a Scribd company logo
1
Андрей Маркелов
amarkelov@inventa.ru
Введение в Docker
23.04.2015
2
Контейнеры и виртуализация
● Разные концепции
● Виртуализация – вертикальное абстрагирование
● Контейнеры – горизонтальное разбиение
● Контейнеры используются для замены виртуализации там, где они справляются
лучше:
● Горизонтальная изоляция приложений
● Делегирование окружений
● “Виртуализация приложений”
● Максимальная плотность
● Зачастую контейнеры используются поверх виртуализации
3
Контейнеры в GNU/Linux
4
Namespaces (пространства имен)
● Mount namespaces
● mount(), umount()
● UTS namespaces
● uname()
● IPC namespaces
● System V IPC objects, POSIX message queues
● PID namespaces
● /proc, PID
● Network namespaces
● NICs, firewall, routing table
5
Control Groups (CGroups)
● Десять групп
● Основные группы:
● cpu
● memory
● blkio
● systemctl
● net-prio
● cgconfig (устарела) libcgroup будет удалена
6
SELinux – реализация MAC для GNU/Linux
● Интегрирована в ядро
● LSM и расширенные атрибуты
● Для чего использовать:
● Запуск программ с минимальными привилегиями
● Защита от эксплоитов
● Защита пользовательских данных
● Для чего не предназначена:
● Аудит кода
● Шифрование
● Обновления
7
Docker – изменяет правила игры
● Docker CLI интересен, но это не столь значительное
нововведение. Технологии, позволяющие создавать
контейнеры в GNU/Linux > 10 лет
● Docker как формат упаковки и распространения приложений
– вот что важно!
8
Docker - понятия
● Контейнер – запущенное из образа приложение
● Образ – статический снимок конфигурации контейнера.
Образы могут зависить от других образов. Образ всегда r/o.
Изменения сохраняются только созданием образа поверх
образа.
● Образ платформы – не имеющий родительских образов.
Содержит базовые библиотеки и утилиты для запуска
приложений.
9
Docker – упаковка приложений
● API и формат образов:
● Перемещаемость контейнеров между хостами
● Контроль версий и переиспользование компонентов
● Удаленный репозиторий для образов
● Dockerfile – шаблон конфигурации для сборки образов
10
Контейнеры в Linux Вариант 1: Host Containers
Host Containers
Идентичные
контейнеры
Host
Linux
● В Linux хост делится на
защищенные контейнеры
● В каждом контейнере
запускается один код
пространства пользователя
● За : Обновления применяются
просто
● Против : Ограничено только
Одной средой исполнения
11
Контейнеры в Linux Вариант 2:
Image-based Containers
Image-based
Containers
Разные контейнеры
Формат Docker
● Docker предоставляет формат
образов для распространения
программного обеспечения.
● Пакеты самого приложения и
все зависимости для внедрения
приложения в контейнерах
● Docker включает в себя среду
исполнения для приложений
12
Возможные ограничения Docker
● Возможно не достаточно зрело для mission-
critical
● Возможно не достаточно безопасно
● Достаточно быстро меняется
● Приложение – один процесс
13
Примеры реализаций
● Операционная система
● Linux общего назначения
● CoreOS
● Atomic
● VMware Photon
● Управление
● Cockpit
● Kubernetes
● IaaS – что угодно (OpenStack, AWS.. Google.)
14
Примеры использования
● Основа PaaS
● Основа DevOps
15
Спасибо за внимание!

More Related Content

Введение в Docker

  • 2. 2 Контейнеры и виртуализация ● Разные концепции ● Виртуализация – вертикальное абстрагирование ● Контейнеры – горизонтальное разбиение ● Контейнеры используются для замены виртуализации там, где они справляются лучше: ● Горизонтальная изоляция приложений ● Делегирование окружений ● “Виртуализация приложений” ● Максимальная плотность ● Зачастую контейнеры используются поверх виртуализации
  • 4. 4 Namespaces (пространства имен) ● Mount namespaces ● mount(), umount() ● UTS namespaces ● uname() ● IPC namespaces ● System V IPC objects, POSIX message queues ● PID namespaces ● /proc, PID ● Network namespaces ● NICs, firewall, routing table
  • 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.)