Ответ
Docker-контейнер — это запущенный экземпляр Docker-образа. Его структура многослойна и состоит из:
- Базовый образ (Image Layers) — набор неизменяемых (read-only) слоёв файловой системы, которые берутся из образа (например,
ubuntu:latest). Эти слои общие для всех контейнеров, созданных из одного и того же образа, что экономит место на диске. - Слой записи (Container Layer / Writeable Layer) — тонкий изменяемый слой, создаваемый поверх слоёв образа при запуске контейнера. Все изменения файловой системы (создание, модификация, удаление файлов) происходят именно в этом слое. При удалении контейнера этот слой также удаляется (если только данные не сохранены в томе).
- Метаданные и конфигурация контейнера — это данные, которые не являются частью файловой системы образа, но определяют поведение контейнера:
- Сетевые настройки (IP-адрес, порты, bridge network).
- Переменные окружения.
- Команда запуска (CMD/ENTRYPOINT).
- Подключённые тома (volumes) и bind mounts.
- Ограничения ресурсов (CPU, память).
- Изоляция пространств имён (namespace) и контрольные группы (cgroups).
Визуализация и проверка:
# Запустить контейнер в фоновом режиме
docker run -d --name my_web -p 8080:80 nginx:alpine
# Просмотреть детальную информацию о контейнере в формате JSON
# В выводе можно найти данные о слоях, сети, конфигурации.
docker inspect my_web
# Посмотреть список слоёв образа, из которого запущен контейнер
docker history nginx:alpine
# Просмотреть процессы внутри контейнера
docker top my_web
# Проверить использование ресурсов контейнера
docker stats my_web
Ключевой принцип: Неизменяемость образа + изменяемый слой контейнера = предсказуемость и воспроизводимость среды выполнения.