Контейнеры — один из главных трендов последних лет в области виртуализации, и на рынке есть несколько альтернативных решений, претендующих на готовность к промышленному использованию. В такой ситуации важно не только качество продукта, но и простота миграции с одного решения на другое. Чтобы облегчить эту задачу, самоуправляемая организация Open Container Initiative (OCI) выпустила для Linux-контейнеров первую версию своих спецификаций, определяющих стандарт для исполняемой среды и формата образов.
На настоящий момент OCI развивает две спецификации: для исполняемой среды контейнеров (runtime-spec), которая определяет, как запускается комплект файловой системы (filesystem bundle) с содержимым контейнера (эталонная реализация — runc) и для формата образов контейнеров (image-spec), которая определяет формат, из которого образ контейнера будет распакован для дальнейшего запуска в filesystem bundle. Спецификации runtime-spec 1.0 и image-spec 1.0 опубликованы на GitHub под свободной лицензией Apache License 2.0. Стандарт подготовлен благодаря совместной работе создателей конкурирующих проектов Docker и CoreOS, ранее пытавшихся продвигать собственные форматы контейнеров.
Разработанные OCI спецификации изначально не привязаны к решениям отдельных вендоров и учитывают повышенные требования к безопасности и переносимости. Благодаря OCI пользователи получат возможность упаковывать свои приложения в универсальные контейнеры, которые смогут работать с любым инструментарием, включая Docker и rkt. Позже в этом году ожидается запуск программы сертификации от OCI.
OCI — это проект, созданный два года назад при некоммерческой организации Linux Foundation с целью создания независимых открытых стандартов для контейнеров. Его основателями стали лидеры индустрии Linux-контейнеров — компании Docker, CoreOS и др., а среди участников OCI сегодня можно встретить уже 43 компании, в т. ч. AWS, Dell EMC, Cisco, Facebook, Fujitsu, HРЕ, Huawei, Google, IBM, Intel, Mesosphere, Microsoft, Oracle, Red Hat, SUSE, VMware.
Показательно, что у OCI есть конкурент, хотя и в рамках Linux Foundation — это Cloud Native Computing (CNC). Эта организация ставит перед собой более масштабную цель, намереваясь объединить огромное количество инструментов для работы с контейнерами. К примеру, Google предлагает Kubernetes, который позволяет работать с контейнерами на большом количестве машин, другие компании также разрабатывают подобные сервисы. Google уже передала код Kubernetes организации CNC, другие компании также постепенно открывают коды своих продуктов.
В платформе Kubernetes реализован новый экспериментальный интерфейс CRI (Container Runtime Interface), позволяющий подключать альтернативные runtme, в том числе rklet и CRI-O.
Amazon, Intel, IBM и Google анонсировали поддержку спецификаций OCI в Amazon ECR (EC2 Container Registry), Intel Clear Containers, IBM Bluemix Container Service и Google Cloud Platform. Над поддержкой OCI также работает команда Apache Mesos. Oracle в рамках проекта Railcar развивает совместимую со спецификациями OCI альтернативу runc/containerd, написанную на языке Rust.