hostprofi.ru
Подобрать хостинг
Термин·буква O

OCI-образ

краткое определение

OCI-образ — стандартизированный формат образа контейнера по спецификации Open Container Initiative. Представляет собой набор слоёв файловой системы и манифеста. Совместим с Docker, containerd, Podman и любым OCI-совместимым runtime.

OCI-образ (Open Container Initiative image) — формат упаковки контейнерного приложения, определённый спецификацией OCI Image Format. Образ состоит из манифеста (список слоёв и метаданных), конфигурации (переменные среды, точка входа, архитектура) и набора слоёв файловой системы в формате tar.gz. Любой OCI-совместимый runtime — containerd, Docker, Podman — может запустить такой образ без конвертации.

Как работает

Слои OCI-образа хранятся в content-addressable storage: каждый слой идентифицируется SHA-256 хешем своего содержимого. При скачивании runtime проверяет хеши и не загружает уже существующие слои. Манифест содержит ordered список layer digests; конфигурация — JSON с командой запуска, env-переменными и labels.

При запуске контейнера runtime монтирует слои через overlayfs: нижние — read-only, верхний (container layer) — read-write. Запись в контейнере не изменяет образ. Helm chart и Kubernetes ссылаются на образы через digest (sha256:abc123...) для детерминированных деплоев.

Multi-platform образы (manifest list / OCI image index) позволяют одному тегу указывать на разные образы для amd64, arm64, riscv64. Docker buildx и docker manifest создают такие индексы.

История

До OCI в 2014-2015 годах форматы образов были проприетарными. Docker использовал собственный формат; CoreOS — ACI для rkt. В июне 2015 года Docker, CoreOS, Google, Red Hat и другие основали Open Container Initiative под эгидой Linux Foundation. Спецификация OCI Image Format 1.0 вышла в июле 2017 года. С этого момента Docker-образы формально совместимы с OCI; различия между «Docker image» и «OCI image» минимальны на уровне манифеста.

Виды

  • Single-platform image — один манифест для одной архитектуры (amd64).
  • Multi-platform image (image index) — манифест-индекс, ссылающийся на несколько платформо-специфичных манифестов.
  • OCI artifact — обобщение формата для хранения произвольных артефактов (helm charts, подписи Cosign, SBOM) в тех же OCI registry.

На что обращать внимание

При выборе базового образа важна минимальность: образ на основе alpine (5 МБ) загружается и запускается быстрее, чем на основе ubuntu (77 МБ). Слои с зависимостями стоит выносить отдельно от кода приложения — это ускоряет повторные сборки и деплой на VDS. Сканирование образов (Trivy, Grype) позволяет находить CVE в слоях до выкладки в production.

Сборка OCI-образов

Dockerfile компилируется в OCI-образ командой docker build или альтернативными инструментами: Buildah (rootless сборка без демона), Kaniko (сборка внутри Kubernetes-кластера), BuildKit (встроен в Docker 23+, параллельная сборка, кеш между pipeline-шагами).

Multi-platform образы: docker buildx build --platform linux/amd64,linux/arm64 создаёт один манифест для нескольких архитектур. При pull на ARM-машине (Apple Silicon, AWS Graviton) скачивается arm64-слой автоматически.

На что обращать внимание

Размер образа влияет на время деплоя и расходы на трафик. Alpine-базовые образы весят 5-15 MB против 100-200 MB для Debian. Multi-stage build оставляет в финальном образе только runtime: компилятор и исходники не попадают в продакшен-слой. Регулярное сканирование образов инструментами Trivy или Docker Hub Vulnerability Scanning выявляет CVE в зависимостях.

Другие термины