Шаблоны контейнеров
Денис Силаков, ст. системный архитектор
dsilakov@virtuozzo.com
Терминология
• Контейнер – «легковесное»
виртуальное окружение
• Внутри гостей –
- ядро основной ОС
Copyright © 2016 Virtuozzo. All Rights Reserved. 2
Технологии
• Solaris Zones
• FreeBSD Jails
• Linux:
• LXC
• Virtuozzo/OpenVZ
• Docker (контейнеры «с наполнением»)
Copyright © 2016 Virtuozzo. All Rights Reserved. 3
Пустой контейнер – плохой контейнер
Пользователям нужно наполнение:
• Операционная система
• Заданный набор приложений
Copyright © 2016 Virtuozzo. All Rights Reserved. 4
Доставка контента в контейнер
• Использование заранее созданных ВМ
• Просто и популярно (Docker)
• Требует поддержки
(“30% of Official Images in Docker Hub Contain High Priority
Security Vulnerabilities” – BanyanOps, 2015)
• Автоматическая установка ОС/приложений после
создания контейнера
Copyright © 2016 Virtuozzo. All Rights Reserved. 5
Автоматическая установка ОС
• «Родные» программы установки ОС
• Специфичны для каждого дистрибутива Linux
• Требуют предварительной конфигурации
• Ограниченные возможности автоматической установки
• Использование средств хост-системы
• LXC c ALT Linux можно развернуть только в ALT Linux
• Инструменты установки одной ОС внутри другой
• Debootstrap, supermin, rosa-bootstrap – ограничены по
функционалу
Copyright © 2016 Virtuozzo. All Rights Reserved. 6
Средства управления конфигурацией
• Ansible, chef, puppet
• … в совокупности с Vagrant …
Работает, но требует отдельной настройки
Copyright © 2016 Virtuozzo. All Rights Reserved. 7
Жизнь после установки
Мало установить систему, ее надо поддерживать
• Устанавливать обновления
• Устанавливать/удалять заданные приложения
Copyright © 2016 Virtuozzo. All Rights Reserved. 8
Инструменты поддержки
• Docker – манипулирование «слоями» контейнеров
• Недостаточно гибко
• Системы управления конфигурациями
• Требуют настройки
• Многие действия производят изнутри контейнеров
нужен доступ в интернет, права администратора, специальный
агент и т.п.
Copyright © 2016 Virtuozzo. All Rights Reserved. 9
Шаблоны контейнеров Virtuozzo
• Установка ОС в контейнере «с нуля»
• Установка/удаление/обновление наборов программ
• Унифицированный интерфейс для всех
дистрибутивов Linux
• Нет необходимости в модификациях внутри
контейнеров (не нужно агентов, ssh-доступа, …)
Copyright © 2016 Virtuozzo. All Rights Reserved. 10
Дистрибутив Linux
== набор пакетов:
• Архив с файлами программ
• Скрипты
Менеджер пакетов:
• Распаковка архивов
• Выполнение скриптов из пакетов
• Выполнение системных триггеров
Copyright © 2016 Virtuozzo. All Rights Reserved.
11
Пакет
Файлы приложения
Скрипты установки /
удаления
Зависимости от других
компонентов ОС
Управление пакетами
Установка ОС или набора программ == установка
нужных пакетов в нужном порядке
Простой распаковки недостаточно:
• Cкрипты и триггеры
• Зависимости между пакетами
• Скрипт из пакета A требует утилиту из пакета B
• Нюансы, о которых знают только менеджеры пакетов
конкретного дистрибутива
Copyright © 2016 Virtuozzo. All Rights Reserved. 12
Virtuozzo vzpkg*
Модифицированные версии менеджеров пакетов
для разных дистрибутивов Linux
• Заточены на развертывание ОС «с нуля» и ее
последующее обслуживание извне контейнера
• Способны взаимодействовать с инструментами
управления контейнерами
Copyright © 2016 Virtuozzo. All Rights Reserved. 13
Виды шаблонов
• Шаблон ОС
• Базовый
• Дополнительные вариации
CentOS Minimal, CentOS WebServer, …
• Шаблоны приложений
• PHP, Apache, MySQL, …
Copyright © 2016 Virtuozzo. All Rights Reserved. 14
Шаблон ОС
• Списки пакетов, замкнутые по зависимостям
• Скрипты, выполняемые программами установки ОС
• Настройка сети, часового пояса, …
Copyright © 2016 Virtuozzo. All Rights Reserved. 15
Дополнительный
шаблон ОС
Базовый шаблон
Доп. пакеты
Доп. скрипты
Установка ОС
== подготовка образа диска с установленной ОС
• Распаковка минимального окружения с
модифицированным менеджером пакетов
• Скачивание и распаковка пакетов ОС
• Выполнение скриптов из пакетов
• Выполнение скриптов установки ОС
Copyright © 2016 Virtuozzo. All Rights Reserved. 16
Шаблоны приложений
• Предназначены для установки поверх конкретного
шаблона ОС
• Centos-7-x86_64-php
• Содержат список пакетов для установки и
дополнительные скрипты
Copyright © 2016 Virtuozzo. All Rights Reserved. 17
Работа с шаблонами
Утилита командной строки vzpkg
• Создание и обновление кэша шаблонов
• Во избежание повторной распаковки набора пакетов
• Установка/удаление шаблонов приложений в
контейнерах
• Обновление пакетов, относящихся к шаблону
Copyright © 2016 Virtuozzo. All Rights Reserved. 18
Challenges
• Поддержка разных пакетных менеджеров
• Различные кодовые базы (yum, zypper, dpkg/apt)
• Различные условия сборки
• Обновления при обновлении ОС
• Скрипты установки ОС
Copyright © 2016 Virtuozzo. All Rights Reserved. 19
Изменения в пакетных менеджерах
• Установка пакетов в заданный контейнер
• Работа с идентификаторами пользователей/групп
• Обработка зависимостей
• …
• Работа с VZFS
• «Слияние» одинаковых файлов из разных контейнеров
• Больше не нужна (в Virtuozzo 7 заменена на pfcache)
Размер: 1-3KLoC (50% - поддержка VZFS)
Copyright © 2016 Virtuozzo. All Rights Reserved. 20
Использование
• Командная строка
• Шаблон – параметр при создании контейнера
• Vzpkg – «пакетный менеджер» для шаблонов
• GUI – Virtuozzo Automator
Copyright © 2016 Virtuozzo. All Rights Reserved. 21
Командная строка
# prlctl create c1 --ostemplate ubuntu-16.04-x86_64 --vmtype=ct
# vzpkg install c1 php
# vzpkg update c1 ubuntu-16.04-x86_64
# vzpkg remove c1 php
Copyright © 2016 Virtuozzo. All Rights Reserved. 22
Настройки vzpkg
• Списки пакетов, скрипты – в текстовом виде
• Репозитории-источники пакетов
• Ключи для доступа к закрытым репозиториям по
подписке
Copyright © 2016 Virtuozzo. All Rights Reserved. 23
Ресурсы
• Шаблоны Virtuozzo
https://src.openvz.org/projects/OVZT
• Инструментарий управления шаблонами
https://src.openvz.org/projects/OVZ/repos/vztt
Copyright © 2016 Virtuozzo. All Rights Reserved. 24

Шаблоны контейнеров в Virtuozzo

  • 1.
    Шаблоны контейнеров Денис Силаков,ст. системный архитектор dsilakov@virtuozzo.com
  • 2.
    Терминология • Контейнер –«легковесное» виртуальное окружение • Внутри гостей – - ядро основной ОС Copyright © 2016 Virtuozzo. All Rights Reserved. 2
  • 3.
    Технологии • Solaris Zones •FreeBSD Jails • Linux: • LXC • Virtuozzo/OpenVZ • Docker (контейнеры «с наполнением») Copyright © 2016 Virtuozzo. All Rights Reserved. 3
  • 4.
    Пустой контейнер –плохой контейнер Пользователям нужно наполнение: • Операционная система • Заданный набор приложений Copyright © 2016 Virtuozzo. All Rights Reserved. 4
  • 5.
    Доставка контента вконтейнер • Использование заранее созданных ВМ • Просто и популярно (Docker) • Требует поддержки (“30% of Official Images in Docker Hub Contain High Priority Security Vulnerabilities” – BanyanOps, 2015) • Автоматическая установка ОС/приложений после создания контейнера Copyright © 2016 Virtuozzo. All Rights Reserved. 5
  • 6.
    Автоматическая установка ОС •«Родные» программы установки ОС • Специфичны для каждого дистрибутива Linux • Требуют предварительной конфигурации • Ограниченные возможности автоматической установки • Использование средств хост-системы • LXC c ALT Linux можно развернуть только в ALT Linux • Инструменты установки одной ОС внутри другой • Debootstrap, supermin, rosa-bootstrap – ограничены по функционалу Copyright © 2016 Virtuozzo. All Rights Reserved. 6
  • 7.
    Средства управления конфигурацией •Ansible, chef, puppet • … в совокупности с Vagrant … Работает, но требует отдельной настройки Copyright © 2016 Virtuozzo. All Rights Reserved. 7
  • 8.
    Жизнь после установки Малоустановить систему, ее надо поддерживать • Устанавливать обновления • Устанавливать/удалять заданные приложения Copyright © 2016 Virtuozzo. All Rights Reserved. 8
  • 9.
    Инструменты поддержки • Docker– манипулирование «слоями» контейнеров • Недостаточно гибко • Системы управления конфигурациями • Требуют настройки • Многие действия производят изнутри контейнеров нужен доступ в интернет, права администратора, специальный агент и т.п. Copyright © 2016 Virtuozzo. All Rights Reserved. 9
  • 10.
    Шаблоны контейнеров Virtuozzo •Установка ОС в контейнере «с нуля» • Установка/удаление/обновление наборов программ • Унифицированный интерфейс для всех дистрибутивов Linux • Нет необходимости в модификациях внутри контейнеров (не нужно агентов, ssh-доступа, …) Copyright © 2016 Virtuozzo. All Rights Reserved. 10
  • 11.
    Дистрибутив Linux == наборпакетов: • Архив с файлами программ • Скрипты Менеджер пакетов: • Распаковка архивов • Выполнение скриптов из пакетов • Выполнение системных триггеров Copyright © 2016 Virtuozzo. All Rights Reserved. 11 Пакет Файлы приложения Скрипты установки / удаления Зависимости от других компонентов ОС
  • 12.
    Управление пакетами Установка ОСили набора программ == установка нужных пакетов в нужном порядке Простой распаковки недостаточно: • Cкрипты и триггеры • Зависимости между пакетами • Скрипт из пакета A требует утилиту из пакета B • Нюансы, о которых знают только менеджеры пакетов конкретного дистрибутива Copyright © 2016 Virtuozzo. All Rights Reserved. 12
  • 13.
    Virtuozzo vzpkg* Модифицированные версиименеджеров пакетов для разных дистрибутивов Linux • Заточены на развертывание ОС «с нуля» и ее последующее обслуживание извне контейнера • Способны взаимодействовать с инструментами управления контейнерами Copyright © 2016 Virtuozzo. All Rights Reserved. 13
  • 14.
    Виды шаблонов • ШаблонОС • Базовый • Дополнительные вариации CentOS Minimal, CentOS WebServer, … • Шаблоны приложений • PHP, Apache, MySQL, … Copyright © 2016 Virtuozzo. All Rights Reserved. 14
  • 15.
    Шаблон ОС • Спискипакетов, замкнутые по зависимостям • Скрипты, выполняемые программами установки ОС • Настройка сети, часового пояса, … Copyright © 2016 Virtuozzo. All Rights Reserved. 15 Дополнительный шаблон ОС Базовый шаблон Доп. пакеты Доп. скрипты
  • 16.
    Установка ОС == подготовкаобраза диска с установленной ОС • Распаковка минимального окружения с модифицированным менеджером пакетов • Скачивание и распаковка пакетов ОС • Выполнение скриптов из пакетов • Выполнение скриптов установки ОС Copyright © 2016 Virtuozzo. All Rights Reserved. 16
  • 17.
    Шаблоны приложений • Предназначеныдля установки поверх конкретного шаблона ОС • Centos-7-x86_64-php • Содержат список пакетов для установки и дополнительные скрипты Copyright © 2016 Virtuozzo. All Rights Reserved. 17
  • 18.
    Работа с шаблонами Утилитакомандной строки vzpkg • Создание и обновление кэша шаблонов • Во избежание повторной распаковки набора пакетов • Установка/удаление шаблонов приложений в контейнерах • Обновление пакетов, относящихся к шаблону Copyright © 2016 Virtuozzo. All Rights Reserved. 18
  • 19.
    Challenges • Поддержка разныхпакетных менеджеров • Различные кодовые базы (yum, zypper, dpkg/apt) • Различные условия сборки • Обновления при обновлении ОС • Скрипты установки ОС Copyright © 2016 Virtuozzo. All Rights Reserved. 19
  • 20.
    Изменения в пакетныхменеджерах • Установка пакетов в заданный контейнер • Работа с идентификаторами пользователей/групп • Обработка зависимостей • … • Работа с VZFS • «Слияние» одинаковых файлов из разных контейнеров • Больше не нужна (в Virtuozzo 7 заменена на pfcache) Размер: 1-3KLoC (50% - поддержка VZFS) Copyright © 2016 Virtuozzo. All Rights Reserved. 20
  • 21.
    Использование • Командная строка •Шаблон – параметр при создании контейнера • Vzpkg – «пакетный менеджер» для шаблонов • GUI – Virtuozzo Automator Copyright © 2016 Virtuozzo. All Rights Reserved. 21
  • 22.
    Командная строка # prlctlcreate c1 --ostemplate ubuntu-16.04-x86_64 --vmtype=ct # vzpkg install c1 php # vzpkg update c1 ubuntu-16.04-x86_64 # vzpkg remove c1 php Copyright © 2016 Virtuozzo. All Rights Reserved. 22
  • 23.
    Настройки vzpkg • Спискипакетов, скрипты – в текстовом виде • Репозитории-источники пакетов • Ключи для доступа к закрытым репозиториям по подписке Copyright © 2016 Virtuozzo. All Rights Reserved. 23
  • 24.
    Ресурсы • Шаблоны Virtuozzo https://src.openvz.org/projects/OVZT •Инструментарий управления шаблонами https://src.openvz.org/projects/OVZ/repos/vztt Copyright © 2016 Virtuozzo. All Rights Reserved. 24