Развёртывание приложений Docker
в контейнерах Virtuozzo
Развёртывание приложений Docker
в контейнерах Virtuozzo
Павел Тихомиров
ПланПлан
• Почему Docker?
• Сравнение Docker, VZ контейнеров и Виртуальных машин
• Проблемы и решения
• Пример развертывания Docker
2
Что такое Docker и что он может?Что такое Docker и что он может?
• Система разработки, распространения и менеджмента приложений
– Создавать легко переносимые приложения
– Делиться приложениями на Docker Hub
– Распределенные приложения
• Содержит более 100,000 приложений
• Web-приложения(Wordpress, Apache, MySQL), тестовые среды(docker-
dev, CRIU) и менеджмент контейнеров(Compose, Kubernetes, cAdvisor)
3
Docker на хостеDocker на хосте
5
+ Низкие накладные
расходы
- Для одного пользователя
- Только доверенные
приложения
Docker в виртуальных машинахDocker в виртуальных машинах
6
+ Многопользовательская
аренда
- Высокие накладные
расходы
Docker в Virtuozzo контейнерахDocker в Virtuozzo контейнерах
7
+ Многопользовательская
аренда
+ Низкие накладные
расходы
Проблемы возникавшие с Docker в VZ контейнерахПроблемы возникавшие с Docker в VZ контейнерах
• Вложенные namespace'ы
• Вложенные cgroup'ы
• Сеть внутри Viruozzo контейнеров
• Альтернатива VFS граф-драйверу
8
Вложенные namespace'ыВложенные namespace'ы
• Docker использует clone NEW_{NET,IPC,UTS,MNT,PID}
• Разборка вложенных netns при остановке CT
• Мигрировать CT с вложенными ns нельзя(ограничено в VZ6)
• Capabilitiles – части нет в 2.6.32-ядрах(ограничены в VZ6)
• Добавили CAP_LAST_CAP и Child sub-reaper из мейнстрима
9
Вложенные cgroup'ыВложенные cgroup'ы
• Распространение ограничений на количество доступных cpu
• Распространение ограничений сpuset маски
• Эмулируем memory контроллер через наши beancounter'ы
• Конфигурируем systemd и патчим dind чтобы понимали наши мульти-
иерархии
• Простая реализация cgroup nsamespace
10
Сеть внутри Virtuozzo контейнеровСеть внутри Virtuozzo контейнеров
• Создание и конфигурация veth и bridge в CT
• Проблема с forwarding таблицами bridge
• Не поддерживаются bridge в Docker CT в VZ CT(sysfs)(ограничено в VZ6)
11
Альтернатива VFS граф-драйверуАльтернатива VFS граф-драйверу
• Только VFS граф-драйвер для Docker
– Были dm-thin и btrfs
– Нельзя дать полный доступ к блочному устройству
– Внешняя модификация образа диска под контейнером опасна для хоста
• Наш proxy граф-драйвер https://github.com/mpatlasov/docker
– Проксируем(контролируем) запросы через демон на хосте
• Мейнстримный граф-драйвер(Brian Goff из Docker'а)
– Успешно предложили изменения в дизайн
– Сможем использовать12
Извесные ограниченияИзвесные ограничения
• Запрещена миграция при вложенных пространствах имен
• Proxy граф-драйвера пока нет в мейнстриме
• Не поддерживаются bridge внутри Docker CT внутри VZ CT
• Игнорируем выходящие за рамки Capability
13
ТестированиеТестирование
• Основные приложения
• Нагрузочные тесты
• Используем docker test-suit
• Docker быстро развивается и требователен к ядру
14
ПримерПример
• Compose + Docker + Wordpress + MySQL
15
РезюмеРезюме
• Virtuozzo CT - многопользовательский Docker на одном хосте без
накладных расходов
• Столкнулисть с проблемами и решили их, осталось несколько
ограничений
• Будем использовать мейнстримный proxy graph-driver
• Docker быстро развивается и требователен к ядру – поддерживаем
новые фичи по мере появления
16
●
Запускаем Docker в Virtuozzo контейнерах:
http://kb.odin.com/en/125115
●
Запускаем Docker в OpenVZ:
https://openvz.org/Docker_inside_CT
●
Наш proxy граф-драйвер:
https://github.com/mpatlasov/docker
●
Запускаем Docker в Virtuozzo контейнерах:
http://kb.odin.com/en/125115
●
Запускаем Docker в OpenVZ:
https://openvz.org/Docker_inside_CT
●
Наш proxy граф-драйвер:
https://github.com/mpatlasov/docker
Павел Тихомиров <ptikhomirov@virtuozzo.com>

Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров

  • 1.
    Развёртывание приложений Docker вконтейнерах Virtuozzo Развёртывание приложений Docker в контейнерах Virtuozzo Павел Тихомиров
  • 2.
    ПланПлан • Почему Docker? •Сравнение Docker, VZ контейнеров и Виртуальных машин • Проблемы и решения • Пример развертывания Docker 2
  • 3.
    Что такое Dockerи что он может?Что такое Docker и что он может? • Система разработки, распространения и менеджмента приложений – Создавать легко переносимые приложения – Делиться приложениями на Docker Hub – Распределенные приложения • Содержит более 100,000 приложений • Web-приложения(Wordpress, Apache, MySQL), тестовые среды(docker- dev, CRIU) и менеджмент контейнеров(Compose, Kubernetes, cAdvisor) 3
  • 4.
    Docker на хостеDockerна хосте 5 + Низкие накладные расходы - Для одного пользователя - Только доверенные приложения
  • 5.
    Docker в виртуальныхмашинахDocker в виртуальных машинах 6 + Многопользовательская аренда - Высокие накладные расходы
  • 6.
    Docker в VirtuozzoконтейнерахDocker в Virtuozzo контейнерах 7 + Многопользовательская аренда + Низкие накладные расходы
  • 7.
    Проблемы возникавшие сDocker в VZ контейнерахПроблемы возникавшие с Docker в VZ контейнерах • Вложенные namespace'ы • Вложенные cgroup'ы • Сеть внутри Viruozzo контейнеров • Альтернатива VFS граф-драйверу 8
  • 8.
    Вложенные namespace'ыВложенные namespace'ы •Docker использует clone NEW_{NET,IPC,UTS,MNT,PID} • Разборка вложенных netns при остановке CT • Мигрировать CT с вложенными ns нельзя(ограничено в VZ6) • Capabilitiles – части нет в 2.6.32-ядрах(ограничены в VZ6) • Добавили CAP_LAST_CAP и Child sub-reaper из мейнстрима 9
  • 9.
    Вложенные cgroup'ыВложенные cgroup'ы •Распространение ограничений на количество доступных cpu • Распространение ограничений сpuset маски • Эмулируем memory контроллер через наши beancounter'ы • Конфигурируем systemd и патчим dind чтобы понимали наши мульти- иерархии • Простая реализация cgroup nsamespace 10
  • 10.
    Сеть внутри VirtuozzoконтейнеровСеть внутри Virtuozzo контейнеров • Создание и конфигурация veth и bridge в CT • Проблема с forwarding таблицами bridge • Не поддерживаются bridge в Docker CT в VZ CT(sysfs)(ограничено в VZ6) 11
  • 11.
    Альтернатива VFS граф-драйверуАльтернативаVFS граф-драйверу • Только VFS граф-драйвер для Docker – Были dm-thin и btrfs – Нельзя дать полный доступ к блочному устройству – Внешняя модификация образа диска под контейнером опасна для хоста • Наш proxy граф-драйвер https://github.com/mpatlasov/docker – Проксируем(контролируем) запросы через демон на хосте • Мейнстримный граф-драйвер(Brian Goff из Docker'а) – Успешно предложили изменения в дизайн – Сможем использовать12
  • 12.
    Извесные ограниченияИзвесные ограничения •Запрещена миграция при вложенных пространствах имен • Proxy граф-драйвера пока нет в мейнстриме • Не поддерживаются bridge внутри Docker CT внутри VZ CT • Игнорируем выходящие за рамки Capability 13
  • 13.
    ТестированиеТестирование • Основные приложения •Нагрузочные тесты • Используем docker test-suit • Docker быстро развивается и требователен к ядру 14
  • 14.
    ПримерПример • Compose +Docker + Wordpress + MySQL 15
  • 15.
    РезюмеРезюме • Virtuozzo CT- многопользовательский Docker на одном хосте без накладных расходов • Столкнулисть с проблемами и решили их, осталось несколько ограничений • Будем использовать мейнстримный proxy graph-driver • Docker быстро развивается и требователен к ядру – поддерживаем новые фичи по мере появления 16
  • 16.
    ● Запускаем Docker вVirtuozzo контейнерах: http://kb.odin.com/en/125115 ● Запускаем Docker в OpenVZ: https://openvz.org/Docker_inside_CT ● Наш proxy граф-драйвер: https://github.com/mpatlasov/docker ● Запускаем Docker в Virtuozzo контейнерах: http://kb.odin.com/en/125115 ● Запускаем Docker в OpenVZ: https://openvz.org/Docker_inside_CT ● Наш proxy граф-драйвер: https://github.com/mpatlasov/docker Павел Тихомиров <ptikhomirov@virtuozzo.com>