Ответ
Docker-образ и Docker-контейнер — это фундаментальные, связанные, но различные концепции.
-
Docker-образ — это неизменяемый шаблон (read-only). Он содержит:
- Файловую систему (слои ОС, зависимости, код приложения).
- Метаданные (переменные окружения, команда по умолчанию, точки монтирования).
- Образ создается из
Dockerfileкомандойdocker build. Его можно хранить в реестре (Docker Hub, GitLab Registry). - Аналогия: Образ — это
классв ООП илишаблон документа(.docx).
-
Docker-контейнер — это запущенный экземпляр образа (изолированный процесс). Он:
- Создается из образа командой
docker run. - Имеет собственный изолированный userspace (файлы, процессы, сеть).
- Добавляет поверх образа тонкий слой для записи (Copy-on-Write), где сохраняются все изменения во время работы.
- Аналогия: Контейнер — это
объект(экземпляр класса) иликонкретный документ, созданный из шаблона.
- Создается из образа командой
Практический пример в CLI:
# 1. ПОЛУЧИТЬ/СОЗДАТЬ ОБРАЗ (шаблон)
# Скачать образ nginx из реестра
docker pull nginx:alpine
# ИЛИ собрать образ из Dockerfile
docker build -t my-app:1.0 .
# 2. СОЗДАТЬ И ЗАПУСТИТЬ КОНТЕЙНЕР (экземпляр)
docker run -d --name web-server -p 8080:80 nginx:alpine
# Теперь контейнер 'web-server' работает как процесс.
# 3. ПРОВЕРИТЬ РАЗНИЦУ
# Список всех образов на машине
docker images
# Список запущенных контейнеров
docker ps
# Список всех контейнеров (включая остановленные)
docker ps -a
Ключевой вывод для DevOps: Образы — это артефакты, которые мы версионируем, тестируем и продвигаем по pipeline CI/CD. Контейнеры — это runtime-единицы, которые оркестрируются (Kubernetes) и масштабируются в production.