← Назад в словарь

Docker Image (образ контейнера)

Docker Image (образ контейнера) (Docker Image) — образ Docker

Контекст термина

Термин используется в контексте контейнеризации и DevOps (Docker, Kubernetes, CI/CD). Не относится к изображениям (PNG, JPG) или графическим файлам.


Суть в одном предложении

Docker Image — это неизменяемый, версионируемый шаблон, содержащий приложение и его окружение, из которого запускаются контейнеры.


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

Docker Image — это собранный образ файловой системы и конфигурации, включающий код приложения, зависимости, runtime и инструкции запуска, предназначенный для создания контейнеров.


Где используется

  • Docker и Docker Compose
  • Kubernetes
  • CI/CD пайплайны
  • Dev / Test / Stage / Prod окружения
  • Cloud-инфраструктура
  • GitOps-процессы

Архитектурное значение

Docker Image решает одну фундаментальную проблему:

"У меня работает, а на сервере — нет."

Образ гарантирует:

  • Идентичное окружение
  • Повторяемую сборку
  • Предсказуемый деплой
  • Отсутствие зависимости от системы хоста

Подробное объяснение

Image создаётся на основе Dockerfile.

Пример:

FROM php:8.2-fpm-alpine

WORKDIR /var/www

COPY composer.json composer.lock ./
RUN composer install --no-dev --optimize-autoloader

COPY . .

CMD ["php-fpm"]

Сборка:

docker build -t my-app:1.0.0 .

Теперь my-app:1.0.0 — это Docker Image.

Запуск контейнера:

docker run -d -p 9000:9000 my-app:1.0.0

Контейнер — это процесс, созданный из Image.


Структура Docker Image

Образ состоит из слоёв (layers).

Каждая инструкция Dockerfile создаёт слой:

  • FROM
  • RUN
  • COPY
  • ADD

Это даёт:

  • Кеширование сборки
  • Быстрое распространение
  • Повторное использование базовых образов

Проверка слоёв:

docker history my-app:1.0.0

Иммутабельность

Docker Image — неизменяемый.

Если нужно изменить приложение:

  • создаётся новый образ
  • меняется тег
  • деплоится новая версия

Это критично для:

  • Zero-downtime deployment
  • Rollback
  • GitOps

Теги и версионирование

Неправильно:

my-app:latest

Правильно:

my-app:1.0.0
my-app:1.0.1
my-app:prod-2026-02-15

latest не гарантирует воспроизводимость.


Где хранятся Docker Image

  • Docker Hub
  • GitHub Container Registry
  • GitLab Registry
  • Private registry
  • AWS ECR

Публикация:

docker push registry.example.com/my-app:1.0.0

Image vs Container

Docker ImageContainer
ШаблонЗапущенный процесс
НеизменяемыйИмеет состояние
Хранится в registryРаботает в runtime

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

1️⃣ Multi-stage build

FROM composer:2 AS builder
WORKDIR /app
COPY . .
RUN composer install --no-dev

FROM php:8.2-fpm-alpine
WORKDIR /app
COPY --from=builder /app .

Преимущества:

  • Меньший размер
  • Без dev-зависимостей
  • Быстрее деплой

2️⃣ Минимальные базовые образы

  • alpine
  • slim версии

3️⃣ Чистка кеша

RUN apt-get clean && rm -rf /var/lib/apt/lists/*

Безопасность Docker Image

Нельзя:

  • Хранить секреты в образе
  • Использовать root
  • Оставлять dev-инструменты

Лучше:

USER www-data

Проверка уязвимостей:

docker scan my-app:1.0.0

Где особенно важно

  • CI/CD
  • Kubernetes
  • High-load проекты
  • SaaS
  • Микросервисы

Для одного WordPress на VPS образ может быть избыточен. Для масштабируемой инфраструктуры — обязательный элемент.


Что не является Docker Image

  • Виртуальная машина
  • Архив с кодом
  • Снимок файлов без runtime
  • Запущенный контейнер

Частые ошибки

❌ Использование only latest ❌ Большие образы (1–2GB) ❌ Секреты в ENV ❌ Установка dev-зависимостей в прод


Аналоги и связанные термины

  • Docker
  • Container
  • Dockerfile
  • Volume
  • Kubernetes
  • CI/CD

Пример использования

«В CI собирается Docker Image версии 1.0.3 и публикуется в registry, после чего Kubernetes обновляет Deployment.»


Мини-FAQ

Можно ли изменить Docker Image после сборки? Нет. Нужно пересобрать новый.

Зависит ли образ от ОС хоста? Нет. Он использует ядро хоста, но содержит своё окружение.

Можно ли использовать Docker Image без Docker? Да, если используется совместимый runtime (например, containerd).


Смотри также

  • Docker
  • Container
  • Kubernetes
  • CI/CD
  • GitOps