Ответ
Образ (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
Проще: Образ — это рецепт, а контейнер — это приготовленное по нему блюдо.