OpenStack и Docker:
вместе и по отдельности
Андрей Маркелов
markelov.blogspot.com
OpenStack Russia РИТ++ Meetup
21 мая 2015
План презентации
● Контейнеры и
виртуализация
● Docker
● Использование
Docker совместно с
OpenStack
Контейнеры и виртуализация
● Разные концепции:
– Виртуализация – вертикальное абстрагирование;
– Контейнеры – горизонтальное разбиение;
● Контейнеры используются для замены виртуализации
там, где они справляются лучше:
– Горизонтальная изоляция приложений;
– Делегирование окружений;
– Виртуализация приложений;
– Максимальная плотность.
● Зачастую контейнеры используются поверх
виртуализации.
Namespaces (пространства имен)
● Mount namespaces
– Mount(),umount()
● UTS namespaces
– Uname()
● IPC namespaces
– Объекты System V IPC, Очереди сообщений
POSIX
● PID namespaces
– /proc, PID
● Network namespaces
– Сетевые карты, брандмауэр, табл. маршрутизации
CGroups
● Десять групп
● Основные группы:
– Cpu
– Memory
– Blkio
Мандатный контроль доступа
● Интеграция с ядром
– LSM и расширенные атрибуты
● Для чего использовать:
– Запуск с минимальными привилегиями
– Защита от эксплоитов
– Защита пользовательских данных
● Для чего не предназначена:
– Аудит кода
– Шифрование
– Обновления
Docker – изменил правила игры
● Docker CLI – интересен, но это не столь значительное
нововведение. Технологии, позволяющие создавать
контейнеры в GNU/Linux > 10 лет
● Docker интересен как формат упаковки и
распространения приложений.
Docker – терминология
● Контейнер – запущенное из образа приложение.
● Образ – статический снимок конфигурации
контейнера. Образы могут зависеть от других образов.
Образ всегда доступен только на чтение. Изменения
сохраняются только созданием образа поверх образа.
● Образ платформы – не имеющий родительских
образов. Содержит базовые библиотеки и утилиты
для запуска приложений.
Docker – упаковка приложений
● API и формат образов:
– перемещаемость контейнеров между хостами;
– контроль версий и повторное использование
компонентов;
– удаленный репозиторий образов;
– Dockerfile – шаблон конфигурации для сборки
образов;
– Для разделения различных уровней контейнера на
уровне файловой системы могут использоваться
AUFS, btrfs, vfs и DeviceMapper.
Драйвер Docker для Nova - установка
● Установить и запустить Docker на выч. Узле
– yum -y install net-tools docker-io
– systemctl start docker
– git clone https://github.com/stackforge/nova-docker.git
– python setup.py install
● Добавить формат в Glance
– crudini --set /etc/glance/glance-api.conf DEFAULT
container_formats ami,ari,aki,bare,ovf,ova,docker
● Указать драйвер в Nova-compute
– crudini --set /etc/nova/nova.conf DEFAULT
compute_driver novadocker.virt.docker.DockerDriver
Драйвер Docker для Nova - работа
[root@compute ~]# docker pull larsks/thttpd
[root@compute ~]# source keystonerc_admin
[root@compute ~]# docker save larsks/thttpd | glance image-create --is-
public True --container-format docker --disk-format raw --name
larsks/thttpd
+------------------+--------------------------------------+
| container_format | docker |
| updated_at | 2015-05-09T19:42:25 |
+------------------+--------------------------------------+
[andrey@pc ~]$ glance image-list
+------+---------------------+-------------+------------------+
| ID | Name | Disk Format | Container Format |
+------+---------------------+-------------+------------------+
| bc.. | cirros-0.3.3-x86_64 | qcow2 | bare |
| 71.. | larsks/thttpd | raw | docker |
+------+---------------------+-------------+------------------+
Драйвер Docker для Nova - работа
[andrey@pc ~]$ source keystonerc_demo
[andrey@pc ~]$ nova boot --image larsks/thttpd --flavor m1.small test1
[root@compute ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED
STATUS PORTS NAMES
4680097f2cc0 larsks/thttpd:latest "/thttpd -D -l /dev/ 13 minutes ago
Up 13 minutes nova-65de57d0-f033-4818-a522-2c3291dc516b
Драйвер Docker для Nova - Horizon
Magnum
● API-сервис для использования Docker, Kubernetes как
ресурсов в OpenStack
● Использует Heat и ОС (Atomic, CoreOS, Snappy)
● ОС включает в себя компоненты Docker и Kubernetes.
Когда кластер запускается в кластере Nova, Magnum
им управляет
● https://github.com/openstack/magnum
Kolla
● Сервсис для контейниризации служб OpenStack как
отдельных микро-сервисов
– Репозиторий Kollaglue
● Задачи:
– Внедрение;
– Упрощение обновлений;
– Переносимость;
●
Например oVirt 3.6 – интеграция с OpenStack
– Управление при помощи TripleO, Heat, Ansible и
т.д.
● https://github.com/stackforge/kolla
Спасибо за внимание
СПАСИБО ЗА ВНИМАНИЕ!

OpenStack и Docker: вместе и по отдельности

  • 1.
    OpenStack и Docker: вместеи по отдельности Андрей Маркелов markelov.blogspot.com OpenStack Russia РИТ++ Meetup 21 мая 2015
  • 2.
    План презентации ● Контейнерыи виртуализация ● Docker ● Использование Docker совместно с OpenStack
  • 3.
    Контейнеры и виртуализация ●Разные концепции: – Виртуализация – вертикальное абстрагирование; – Контейнеры – горизонтальное разбиение; ● Контейнеры используются для замены виртуализации там, где они справляются лучше: – Горизонтальная изоляция приложений; – Делегирование окружений; – Виртуализация приложений; – Максимальная плотность. ● Зачастую контейнеры используются поверх виртуализации.
  • 4.
    Namespaces (пространства имен) ●Mount namespaces – Mount(),umount() ● UTS namespaces – Uname() ● IPC namespaces – Объекты System V IPC, Очереди сообщений POSIX ● PID namespaces – /proc, PID ● Network namespaces – Сетевые карты, брандмауэр, табл. маршрутизации
  • 5.
    CGroups ● Десять групп ●Основные группы: – Cpu – Memory – Blkio
  • 6.
    Мандатный контроль доступа ●Интеграция с ядром – LSM и расширенные атрибуты ● Для чего использовать: – Запуск с минимальными привилегиями – Защита от эксплоитов – Защита пользовательских данных ● Для чего не предназначена: – Аудит кода – Шифрование – Обновления
  • 7.
    Docker – изменилправила игры ● Docker CLI – интересен, но это не столь значительное нововведение. Технологии, позволяющие создавать контейнеры в GNU/Linux > 10 лет ● Docker интересен как формат упаковки и распространения приложений.
  • 8.
    Docker – терминология ●Контейнер – запущенное из образа приложение. ● Образ – статический снимок конфигурации контейнера. Образы могут зависеть от других образов. Образ всегда доступен только на чтение. Изменения сохраняются только созданием образа поверх образа. ● Образ платформы – не имеющий родительских образов. Содержит базовые библиотеки и утилиты для запуска приложений.
  • 9.
    Docker – упаковкаприложений ● API и формат образов: – перемещаемость контейнеров между хостами; – контроль версий и повторное использование компонентов; – удаленный репозиторий образов; – Dockerfile – шаблон конфигурации для сборки образов; – Для разделения различных уровней контейнера на уровне файловой системы могут использоваться AUFS, btrfs, vfs и DeviceMapper.
  • 10.
    Драйвер Docker дляNova - установка ● Установить и запустить Docker на выч. Узле – yum -y install net-tools docker-io – systemctl start docker – git clone https://github.com/stackforge/nova-docker.git – python setup.py install ● Добавить формат в Glance – crudini --set /etc/glance/glance-api.conf DEFAULT container_formats ami,ari,aki,bare,ovf,ova,docker ● Указать драйвер в Nova-compute – crudini --set /etc/nova/nova.conf DEFAULT compute_driver novadocker.virt.docker.DockerDriver
  • 11.
    Драйвер Docker дляNova - работа [root@compute ~]# docker pull larsks/thttpd [root@compute ~]# source keystonerc_admin [root@compute ~]# docker save larsks/thttpd | glance image-create --is- public True --container-format docker --disk-format raw --name larsks/thttpd +------------------+--------------------------------------+ | container_format | docker | | updated_at | 2015-05-09T19:42:25 | +------------------+--------------------------------------+ [andrey@pc ~]$ glance image-list +------+---------------------+-------------+------------------+ | ID | Name | Disk Format | Container Format | +------+---------------------+-------------+------------------+ | bc.. | cirros-0.3.3-x86_64 | qcow2 | bare | | 71.. | larsks/thttpd | raw | docker | +------+---------------------+-------------+------------------+
  • 12.
    Драйвер Docker дляNova - работа [andrey@pc ~]$ source keystonerc_demo [andrey@pc ~]$ nova boot --image larsks/thttpd --flavor m1.small test1 [root@compute ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4680097f2cc0 larsks/thttpd:latest "/thttpd -D -l /dev/ 13 minutes ago Up 13 minutes nova-65de57d0-f033-4818-a522-2c3291dc516b
  • 13.
  • 14.
    Magnum ● API-сервис дляиспользования Docker, Kubernetes как ресурсов в OpenStack ● Использует Heat и ОС (Atomic, CoreOS, Snappy) ● ОС включает в себя компоненты Docker и Kubernetes. Когда кластер запускается в кластере Nova, Magnum им управляет ● https://github.com/openstack/magnum
  • 15.
    Kolla ● Сервсис дляконтейниризации служб OpenStack как отдельных микро-сервисов – Репозиторий Kollaglue ● Задачи: – Внедрение; – Упрощение обновлений; – Переносимость; ● Например oVirt 3.6 – интеграция с OpenStack – Управление при помощи TripleO, Heat, Ansible и т.д. ● https://github.com/stackforge/kolla
  • 16.