Контейнер — изолированный процесс · R7
R7. Docker и Compose
Цель
Контейнеризировать уже понятное приложение и научиться отлаживать image, network, volume и runtime.
Что освоить
- namespaces и cgroups концептуально
- image layers, Dockerfile и registry
- ports, networks, volumes и Compose
- healthcheck и resource limits
- non-root, multi-stage build и pinning
Материалы основного пути
- Docker: Get started
- Начать здесь. Get started parts 1–6: image, container, app и persistence
- Справочник. CLI/container/image/network reference из учебного проекта
- Docker Build: best practices
- Обязательно. small base, multi-stage, cache, pinning и non-root
- Docker Lab: Building Container Images
- Практика. build, inspect, optimize и пересобрать image
Практика
Приложение, DB и proxy в Compose; image в registry; persistent data и healthchecks.
Проверьте результат
Проект стартует на чистой машине; данные переживают замену контейнера; секретов нет в image.
Вопросы, условия приёмки и доказательства
Ответьте и покажите
- Чем image layer отличается от container filesystem?
- Почему healthcheck не равен restart policy?
Условия приёмки
- Clean Compose start
- Data переживают recreate
- Non-root/health/limits и отсутствие секретов доказаны
Учебный отказ: Удалить app-container и создать заново; затем сломать referenced dependency и получить unhealthy с диагностикой.
Артефакт: Compose-репозиторий + image digest + persistence/health evidence
Проект стартует на чистом host, image non-root и без секретов, health проходит, данные переживают пересоздание контейнера, limits видны inspect.
Хорошее доказательство: Repo + pinned digest + inspect/health/persistence transcript + image scan.
Недостаточно: latest-tag, root process, bind-mounted source и DB без проверенного persistent volume.
Углубление и справочные материалы
Темы для углубления
- BuildKit cache и reproducibility
- multi-arch images
- runtime profiles и image provenance
Сократить image, воспроизводимо собрать его дважды, проверить non-root/read-only runtime и provenance/SBOM.
Результат: Image проходит scan, запускается с dropped capabilities, имеет health/limits и воспроизводимый build record.
Дополнительные материалы
- Docker для начинающих + практика
- Killercoda: Containers
Дополнительно. изолированные сценарии namespaces/cgroups/container runtime
- Play with Docker Classroom