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

Образ контейнера (image)

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

Образ контейнера (container image) — неизменяемый файловый снимок файловой системы с приложением и зависимостями. Слоистая структура: базовый образ + дополнительные слои. Из образа создаётся запущенный контейнер. Хранится в реестрах образов (Docker Hub, GitHub Container Registry).

Образ контейнера (container image) — неизменяемый (immutable) слоистый снимок файловой системы, содержащий приложение и все его зависимости. При запуске образа создаётся контейнер — работающий экземпляр с изолированным процессом и добавленным сверху тонким записываемым слоем. Один образ может порождать сотни одновременно работающих контейнеров.

Слоистая структура

Образ состоит из слоёв (layers). Каждая инструкция в Dockerfile создаёт новый слой. Слои неизменны и кэшируются — если базовый образ уже скачан, загружаются только новые слои. Слои хранятся по содержимому (content-addressable): каждый идентифицируется SHA256-хэшем.

Пример: образ nginx:1.25.3 состоит из нескольких слоёв поверх debian:12 — каждый добавляет файлы. Образ python:3.12-slim поверх debian:12-slim — Python runtime + pip. Ваше приложение добавляет ещё 2–3 слоя с зависимостями и кодом.

История

Docker представил образы контейнеров в 2013 году, базируясь на технологиях UnionFS и LXC. В 2015 году Docker и корпорации основали OCI (Open Container Initiative), стандартизировав формат образов. OCI Image Specification 1.0 опубликована в 2017 году. Containerd (2016, Cloud Native Computing Foundation) стал стандартным runtime для Kubernetes вместо Docker в 2020 году.

Реестры образов

  • Docker Hub — крупнейший публичный реестр, >8 млн образов.
  • GitHub Container Registry (ghcr.io) — интеграция с GitHub CI/CD.
  • Yandex Container Registry — российское облако.
  • AWS ECR, Google GCR, Azure ACR — приватные реестры облачных провайдеров.

Связь с хостингом

На VPS образы скачиваются командой docker pull nginx:1.25 и запускаются через docker run или Docker Compose. Для production рекомендуются фиксированные теги версий (nginx:1.25.3) вместо latest — это обеспечивает воспроизводимость деплоя.

Слоистая архитектура образа

Образ — стек read-only слоёв (overlay filesystem). Каждая инструкция Dockerfile создаёт слой. Общие слои разделяются между образами. При запуске — writable слой поверх. docker history image:tag — слои и их размеры. docker inspect — метаданные образа.

Реестры образов

Docker Hub — публичный реестр (hub.docker.com). GitHub Container Registry (ghcr.io). GitLab Container Registry. AWS ECR, GCR, Yandex Container Registry — облачные. Для продакшен-образов рекомендуется частный реестр: исключает зависимость от внешних сервисов.

Безопасность образов

Сканирование уязвимостей: Trivy, Snyk, Docker Scout. Используйте хэши вместо тегов в production: image@sha256:abc123. Подпись образов через Cosign (Sigstore). Принцип минимума: только необходимые пакеты. Секреты — через переменные окружения или Volume, не в образе.

Multi-arch образы

Docker buildx для cross-platform сборки: docker buildx build --platform linux/amd64,linux/arm64 -t myapp:latest .. Manifest list: один тег для нескольких архитектур. На ARM64 (AWS Graviton, Apple Silicon): нативные образы быстрее x86-эмуляции. GitHub Actions: matrix build для нескольких платформ.

Оптимизация размера образа

Анализ: docker history image — слои. dive — интерактивный анализатор слоёв. Уменьшение: объединить RUN команды с &&, удалять cache в том же слое (apt-get clean). Alpine-base: 5 МБ vs Debian 125 МБ. scratch: нулевой base для статических бинарей (Go, Rust).

Образы контейнеров запускаются в Docker и Podman. Kubernetes использует образы из CI/CD. Dockerfile определяет содержимое образа. Bridge network обеспечивает связь между контейнерами. LXC использует системные образы, а не application images.

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