В чем разница между образом (Image) и контейнером (Container) в Docker?

«В чем разница между образом (Image) и контейнером (Container) в Docker?» — вопрос из категории Инструменты тестирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Образ (Image) и Контейнер (Container) — это ключевые, взаимосвязанные, но принципиально разные концепции в Docker.

Docker Image

  • Что это: Неизменяемый (immutable) шаблон или снимок, содержащий файловую систему, зависимости, код и конфигурацию для запуска приложения.
  • Аналогия: Класс в ООП или установочный ISO-образ операционной системы.
  • Состояние: Статичное, только для чтения. Создается командой docker build.
  • Хранение: В Docker-реестре (Docker Hub, GitLab Registry и т.д.).

Docker Container

  • Что это: Запущенный экземпляр образа. Это изолированный процесс в операционной системе.
  • Аналогия: Объект (экземпляр класса) или запущенная виртуальная машина.
  • Состояние: Изменяемое (mutable). Имеет собственный жизненный цикл (создан, работает, остановлен, удален). Создается командой docker run.
  • Хранение: Живет на хосте, где запущен Docker.

Практический пример

# 1. Получаем ОБРАЗ (шаблон) nginx из реестра
docker pull nginx:alpine

# 2. Создаем и запускаем КОНТЕЙНЕР из этого образа.
# Контейнер получает изолированное пространство и порт.
docker run -d --name my-web-server -p 8080:80 nginx:alpine

# 3. Мы можем создать множество контейнеров из одного образа
docker run -d --name another-server -p 8081:80 nginx:alpine

Проще: Образ — это рецепт, а контейнер — это приготовленное по нему блюдо.