Карта курса
Курс — это 21 модуль и около 150 уроков. Каждый модуль закрывает один блок темы и заканчивается итоговым экзаменом. Этот урок — карта, чтобы ты понимал, где находишься и куда идёшь.
Общая логика прогрессии: начинаем с одного контейнера, добавляем образы, состояние, сеть, потом связываем сервисы вместе через Compose, потом строим реальный DE-стек, и заканчиваем production-горизонтом и капстоном.
Большая картина
Модуль за модулем
Модуль 00 — Введение в курс. Где ты сейчас. Урок про сам курс, эта карта и инструкция «как учиться».
Модуль 01 — Контейнер на пальцах: первый запуск. Самый первый шаг для абсолютного новичка. Что такое контейнер на бытовых аналогиях, первый docker run hello-world, и что вообще произошло — без жаргона.
Модуль 02 — Зачем нужны контейнеры. Что такое контейнер технически (процесс с namespaces и cgroups), история от chroot 1979 до OCI 2015, разница с VM, и DE-кейсы (воспроизводимая среда, локальная разработка DAG’ов, integration tests).
Модуль 03 — Установка: Docker Engine, Desktop, OrbStack, Rancher, Podman. Чем Docker Engine отличается от Docker Desktop, почему появились альтернативы, и какую выбрать на mac/linux/win.
Модуль 04 — Первые контейнеры. docker run, docker ps, docker exec, docker logs, docker stop, docker rm. Базовый цикл: запустить, заглянуть внутрь, остановить, убрать.
Модуль 05 — Образы и реестры. Что такое image vs container, Docker Hub vs приватный реестр (GHCR, Harbor), теги и digests, политика :latest — почему её любить опасно.
Модуль 06 — Слои и хранение. Как устроены слои, как их кеширует BuildKit, что такое storage driver (overlay2 на linux, virtiofs на mac через OrbStack), docker history, docker image inspect.
Модуль 07 — Dockerfile: основы. FROM, RUN, COPY, ADD, CMD, ENTRYPOINT, WORKDIR, ENV, ARG. Что такое build context, как читать вывод docker build, базовые best practices.
Модуль 08 — Dockerfile: multi-stage, HEALTHCHECK, USER. Multi-stage builds (зачем — чтобы образ был 80 МБ, а не 2 ГБ), HEALTHCHECK, non-root USER, .dockerignore, BuildKit cache mounts.
Модуль 09 — Volumes и bind mounts. Где живут данные между рестартами, разница volume vs bind mount vs tmpfs, named volumes, performance-нюансы на macOS (особенно для Postgres).
Модуль 10 — Сети контейнеров. Network drivers (bridge, host, none, overlay), как контейнеры находят друг друга по имени, docker network create, опубликованные порты vs внутренние.
Модуль 11 — Docker Compose: основы. Что такое compose.yaml, services, depends_on, ports, volumes, environment. Пример: compose up с Postgres и pgAdmin.
Модуль 12 — Compose: advanced. Profiles, compose.override.yaml, .env файлы и приоритет переменных, Compose secrets, healthcheck + depends_on: service_healthy, restart политики в Compose.
Модуль 13 — Postgres, MinIO, Redis локально. Конкретные стенды: Postgres 16.4 с инициализацией через /docker-entrypoint-initdb.d, MinIO как S3-совместимое хранилище, Redis как cache/queue, и как их подключить к Python из контейнера или с хоста.
Модуль 14 — Логи, debug, troubleshooting. docker logs с фильтрами, docker stats, docker inspect, docker events, как залезть в упавший контейнер через docker commit, как дебажить «контейнер не стартует».
Модуль 15 — Безопасность. Rootless containers, USER в Dockerfile, image scanning через Trivy, linting через Hadolint, секреты в Compose, capabilities (NET_ADMIN, SYS_PTRACE), no-new-privileges.
Модуль 16 — Python-образы для DE. python:3.12-slim vs python:3.12-alpine vs distroless, multi-stage сборка с uv, кеширование зависимостей через BuildKit, итог: ETL-образ 80 МБ.
Модуль 17 — Реальные DE стеки. Полноценный compose-стенд с Airflow + Postgres + Redis + Kafka. Конфигурация Airflow для локальной разработки DAG’ов, Kafka через Bitnami или Confluent образы.
Модуль 18 — Тестирование с Docker. testcontainers-python для интеграционных тестов pipeline’а, запуск Postgres/Kafka на лету в pytest, GitHub Actions: сборка образа в CI, кеширование, push в GHCR.
Модуль 19 — Production-горизонт. Что дальше после Compose: приватный registry, k8s в двух словах (что Compose там не работает, но идея похожа), observability (logs/metrics/traces), почему сложным prod-стеком на чистом Docker не управляют.
Модуль 20 — Capstone. Финальный проект: собрать локальный DE-стенд с Airflow, который читает CSV из MinIO, грузит в Postgres, экспортирует событие в Kafka. Со своим Dockerfile для Airflow с кастомными provider’ами.
Путь от первой команды до итогового стенда
Структура каждого модуля
Один модуль — это:
- 3-8 уроков. Каждый урок — 15-30 минут чтения + руки в терминале.
- Квиз после каждого урока. 4-5 вопросов на конкретику урока.
- Итоговый экзамен модуля. 6 вопросов, объединяющих темы всего модуля. Pass-threshold 70%.
- Лаба или практическое задание. В части модулей — мини-задание на свой стенд.
- Раздел troubleshooting (где уместен). Распространённые ошибки и как их решать.
В конце курса в твоём ~/docker-sandbox/ будет лежать капстон-проект, который можно положить в личный GitHub и показывать на собеседованиях. Это не просто «прошёл курс» — это артефакт.
Что НЕ покрыто в курсе
Курс не покрывает:
- Kubernetes deep-dive. Только обзорно в модуле 19, чтобы знать, что k8s существует и чем он отличается от Compose. Для k8s есть отдельный курс на платформе (kubernetes-course).
- Swarm. Это устаревшая технология, в проде давно k8s.
- Сложные сетевые сценарии. Overlay-сети, VXLAN, service mesh — это не задачи Junior DE.
- Docker Build Cloud, Scout, Hardened Images (enterprise). Платные фичи Docker Inc, которые junior’а на работе не коснутся в первый год.
Это сознательные пропуски. Курс — про то, что нужно Junior DE на первый год работы.
В следующем уроке — как с этим всем работать: темп, упражнения, чем подкреплять чтение, куда жаловаться, если что-то непонятно.