Организация Open Container Initiative (OCI), действующая под патронажем Linux Foundation, сделала еще один важный шаг вперед, начав работать над проектом, призванным определить, а затем и стандартизировать открытую спецификацию формата образа контейнера.
OCI, сформированная в июне 2015 г., была представлена как инициатива по объединению контейнеров Docker и конкурирующих технологий с целью создать основанный на стандартах подход к дальнейшему развитию рынка контейнеров. Первым успехом OCI в области спецификаций стала спецификация поддержки исполнения контейнеров. В результате выпущенная 13 апреля обновленная версия Docker Engine 1.11 стала первым обновлением Docker, согласованным с требованиями OCI.
Хотя поддержка исполнения определяет среду функционирования контейнера, для рынка контейнеров критически важен формат образа, определяющий способ упаковки приложения внутрь контейнера для последующего развертывания. Формат образа для контейнеров Docker в настоящий момент времени представлен версией 2.2, фактически являющейся отраслевым стандартом. Конкурирующий поставщик контейнеров CoreOS ратует за открытый формат и в декабре 2014 г. представил свой проект образа контейнера приложения (appc), который ныне передан на рассмотрение в OCI.
Учитывая, что в настоящее время состоялось лишь официальное представление группы OCI по спецификации образа, пока рано говорить о возможном решении технического сообщества по степени отличия создаваемой спецификации от фактического стандарта Docker. Об этом сообщил Крис Анизчик, вице-президент по программам разработок Linux Foundation. По его словам, сегодня лишь сформирован проект, так что технические дискуссии и разработки пока находятся на самом старте.
Технический директор CoreOS Брэндон Филипс сообщил, что формат образа OCI возьмет лучшее из наработок, содержащихся в appc и Docker 2.2. Проект OCI призван выработать общие стандарты и обеспечить интероперабельность программных средств.
«И отрасль, и пользователи контейнеров заинтересованы иметь общий стандарт контейнера приложений, независимый от конкретных софтверных проектов, —рассказал Филипс. — Реальным путем к достижению этой цели является создание проекта по стандартизации в рамках OCI, и мы полагаем, что задача эта будет решена достаточно быстро».
Однако разработка открытого стандарта неизбежно означает, что спецификация образа Docker 2.2 станет недействительной. Спецификация формата образа Docker корректировалась после выпуска первой версии в 2013 г., и в дебютировавший в апреле 2015 г. формат Docker 2.2 уже интегрированы некоторые вещи, которые были предложены в декабре 2014 г. в проекте appc.
В Docker 1 образы не имели цифровой подписи, необходимой, чтобы обеспечивать аутентичность и безопасность. Возможность цифровой подписи появилась в appc в 2014 г. и в Docker 2.2 в 2015 г. Филипс отметил, что и сама технология Docker после выхода версии Docker 1 пополнилась многими важными функциями и в целом является хорошей отправной точкой для отраслевого стандарта.
Тем не менее, говорит Филипс, многие считают, что в спецификацию стоит добавить и ряд других функций. «Например, хотелось бы заимствовать из appc делегирование пространства имен DNS. Началось обсуждение и других элементов, таких как метки, многоключевые подписи и запись канонических upstream-адресов».
По словам Филипса, есть надежда, что, если OCI примет за стартовую точку Docker 2.2, то после первого выпуска OCI Image Specification быстро появится группа продуктов и проектов, реализующих новую спецификацию.
Внедрение любой возможной новой OCI Image Specification является важным вопросом, так как при нынешней популярности контейнеров в Docker Hub и других репозиториях контейнеров уже представлены десятки тысяч образов на базе Docker 2.2. Собственный реестр контейнеров CoreOS под названием Quay и среда поддержки исполнения контейнеров rkt (rocket) поддерживают оба формата образов: Docker и appc.
«Мы придерживаемся принципа обратной совместимости, и поэтому пользователи, уже потратившие время и силы на создание образов, могут продолжать ими управлять, хранить их и запускать в работу, используя Quay и rkt», — сказал Филипс.
В будущем на том же подходе к совместимости будет основано и внедрение спецификации OCI. Когда формат OCI созреет, CoreOS, по словам Филипса, добавит к существующим форматам также поддержку OCI Image Spec.
«Мы надеемся, что формат образов OCI быстро станет единым общим отраслевым стандартом, который будет применяться во всех будущих продуктах для сборки, хранения и поддержки исполнения, — говорит Филипс. — Поскольку эта инициатива объединяет лучшие стороны форматов образов appc и Docker 2.2, можно рассчитывать, что создание спецификации и внедрение нового формата образов OCI пойдут быстро».