Открыть сервис

Open Container Initiative

Open Container Initiative (OCI) — это проект с открытым исходным кодом, основанный под эгидой Linux Foundation, который разрабатывает и поддерживает открытые промышленные стандарты для форматов образов контейнеров и сред выполнения контейнеров. Основная цель OCI — обеспечить совместимость и интероперабельность между различными технологиями контейнеризации, независимо от конкретного программного обеспечения, используемого для создания, распространения и запуска контейнеров.

История

Идея создания единого стандарта для контейнеров возникла на фоне быстрого роста популярности Docker и появления альтернативных решений, таких как rkt (произносится как «rocket») от CoreOS. К середине 2015 года стало очевидно, что отсутствие общепринятых спецификаций приводит к фрагментации экосистемы: образы, созданные для одного рантайма, не всегда могли быть запущены в другом, а инструменты для работы с контейнерами были тесно привязаны к конкретным платформам.

22 июня 2015 года на конференции DockerCon компания Docker Inc. объявила о передаче спецификации формата образов (Image Format) и спецификации среды выполнения (Runtime Specification) в новую некоммерческую организацию — Open Container Initiative. Это решение было поддержано ключевыми игроками индустрии, включая Google, Microsoft, IBM, Red Hat, Amazon Web Services и CoreOS. OCI была создана как нейтральная площадка для совместной разработки стандартов, свободных от контроля какой-либо одной компании.

Первая версия спецификации (OCI Runtime Specification v1.0) была выпущена в июле 2017 года, а вслед за ней — OCI Image Specification v1.0. Эти документы закрепили базовые требования к тому, как должен выглядеть контейнерный образ и как его следует запускать.

Основные компоненты

Стандарты OCI состоят из двух ключевых спецификаций, которые вместе определяют жизненный цикл контейнера.

OCI Runtime Specification (runtime-spec)

Эта спецификация описывает, что именно представляет собой среда выполнения контейнера и как она должна взаимодействовать с операционной системой. Она определяет:

Любая среда выполнения (runtime), соответствующая этой спецификации, может запускать любой OCI-совместимый образ. Наиболее известные реализации — runc (используется по умолчанию в Docker и containerd), crun (от Red Hat, написан на C) и youki (написан на Rust).

OCI Image Specification (image-spec)

Эта спецификация определяет стандартный формат для контейнерных образов. Образ представляет собой неизменяемый снимок файловой системы, который может быть развёрнут в контейнере. Ключевые элементы:

Формат образа OCI является прямым наследником формата Docker Image Specification v2 и на сегодняшний день является де-факто стандартом для всех современных систем контейнеризации.

Реализации и совместимость

Стандарты OCI реализованы в большинстве популярных инструментов:

Благодаря OCI, пользователь может создать образ с помощью Docker, сохранить его в реестре, поддерживающем OCI (например, Docker Hub, Harbor, Quay), а затем запустить с помощью Podman или другого совместимого инструмента без каких-либо изменений.

Критика и ограничения

Несмотря на широкое признание, OCI не лишена критики:

Значение и влияние

Open Container Initiative сыграла ключевую роль в индустриализации контейнерных технологий. До появления OCI контейнеры были тесно связаны с конкретным продуктом (Docker). После принятия стандартов OCI контейнеры стали универсальным форматом распространения приложений, аналогичным тому, как ZIP или TAR стали универсальными форматами архивации.

OCI позволила:

Источники

  1. Open Container Initiative. Official Website and Specifications.
  2. Linux Foundation. Open Container Initiative Project Charter.
  3. Docker Inc. "Docker Launches Open Container Initiative". June 2015.
  4. Red Hat. "Podman and the OCI Standard".
  5. Kubernetes Documentation. Container Runtimes.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →