Разработка стандартов для работы с контейнерами – очень актуальная на сегодняшний день тема. Дело в том, что практика контейнерной виртуализации стремительно набирает популярность в силу своей экономической и технологической эффективности, а наличие открытых стандартов, в свою очередь, делает готовые решения еще боле доступными и привлекательными для заказчиков.
С 2016 года наш главный архитектор Павел Емельянов является одним из членов «органа надзора» (Technical Oversight Board) ассоциации OCI. Поэтому мы знаем и хотим рассказать о том, что делает мировое сообщество OpenSource для стандартизации и продвижения контейнерных технологий.
Открытость стандартов несете в себе как преимущества, так и недостатки. В частности, нужно приложить немало усилий, чтобы создать единую экосистему, способную учитывать мнения и объединять усилия разработчиков из разных компаний. Но если это не чья-то коммерческая инициатива, нам нужно самостоятельно организоваться и договориться о стандартах и форматах совместной работы.
Роль таких ассоциаций, как Open Container Initiative (OCI), сводится к созданию открытого «клуба», который будет направлять развитие отрасли, создавая единые отраслевые стандарты для различных контейнерных технологий.
Контейнер и его место в ИТ-экосистеме
Docker определяет понятие «контейнер» как запакованное приложение, готовое к запуску в любой среде. Virtuozzo подходит к контейнеру несколько иначе, запуская в гостевом режиме целый дистрибутив – своего рода легкую виртуальную машину. Однако и тот и другой подход требует адаптации прочих элементов ИТ-экосистемы для свободной работы с контейнерами.
Пользователи хотят получить возможность работать с приложением, независимо от того, кто это приложение создал, от каналов его распространения, от платформы и других параметров. Заказчик вообще не хочет думать о том, как это все работает. Поэтому отрасль постепенно приходит к пониманию, что необходимо распространять контейнеры в виде готовых продуктов – как пирожки с повидлом. Ведь нам без разницы, где их испекли и на каком автомобиле привезли в ближайший киоск.
Глубинная суть вопроса состоит в том, чтобы обеспечить возможность прямого взаимодействия разработчиков, магазинов и провайдеров платформ для запуска приложений. Разработчиков существует огромное множество. В роли магазинов могут выступать DockerHub, Quay, Bitnami, RedHat, а потенциальные платформы для запуска контейнеров предлагают Docker, CoreOS, Virtuozzo, LXC, OpenShift, Magnum и другие. В результате роль OCI заключается в том, чтобы дать возможность этим решениям взаимодействовать с использованием единого стандарта.
Структура OCI
Open Container Initiative создает двухуровневую модель взаимодействия разработчиков. С одной стороны существуют сообщества Technical Developer Community (TDC), которые непосредственно разрабатывают стандарты, обсуждая и описывая их в режиме «открытого сообщества». На начальном этапе создано два сообщества, но ожидается, что их будет очень много, так как областей, требующих введения единого стандарта, появляется все больше.
Наш архитектор Павел Емельянов является членом надзорного органа — Technical Oversight Board (TOB). TOB представлен экспертами отрасли и представляет собой надзорный орган, который как раз будет формаировать сообщества TDC, давать начальные рекомендации и координировать их работу. Примечательно, что TOB состоит из отдельных экспертов, компании же работают на уровне технических сообществ.
На данный момент активно работает TDC по стандарту запуска контейнера (основные участники – Docker, RedHat, CoreOS, Google) и по формату распространения и хранения (основные участники – Docker, Google, RedHat, CoreOS и Huawei). Первые шаги уже сделаны, и TOB рекомендует в качестве базового использовать формат AppC принятый в Rocket, который почти полностью поддержан в RunC (утилита командной строки) и ContainerD (демон, предоставляющий REST интерфейс к RunC). Что касается базового для формата распространения контейнеров, соответствующим TOB рекомендуется использовать формат Docker v2, который предусматривает слоёную структуру образов и поддерживает механизмы их верификации, именования и обнаружения.
Участие Virtuozzo
В качестве примера работы комитетов хотелось упомянуть инициативы нашей компании, так как мы видим эффект от работы ассоциации и стремимся участвовать в ее работе. Virtuozzo планирует присоединиться к максимальному количеству технических комитетов, которые будут разрабатывать стандарты взаимодействия контейнеров.
Но уже сейчас в рамках OCI наши специалисты участвуют в доработках ядра Linux, позволяющих расширить функционал технологий контейнерной виртуализации. В рамках этой инициативы происходит массовое исправление ошибок, а также внедрение дополнительных библиотек для таких проектов как KVM, CRIU, Ploop и т.д.
Кстати, коллективная работа позволяет совместно с другими группами вести такие проекты как расширение функционала KVM и поддержка Hyper-V для гостевых машин с Windows. В проекте qemu мы совместными силами внедряем технологии резервного копирования и поддержку plop. Но а для контейнеров Docker происходит интеграция с нашим инструментом «живой миграции» CRIU. И это только начало – впереди нас ждет значительно больше новых комьюнити и совместных инициатив.
Автор: Virtuozzo