Learning Platform
Глоссарий Troubleshooting
Урок 01.02 · 12 мин
Начальный
dockeroverview

Карта курса

Курс — это 21 модуль и около 150 уроков. Каждый модуль закрывает один блок темы и заканчивается итоговым экзаменом. Этот урок — карта, чтобы ты понимал, где находишься и куда идёшь.

Общая логика прогрессии: начинаем с одного контейнера, добавляем образы, состояние, сеть, потом связываем сервисы вместе через Compose, потом строим реальный DE-стек, и заканчиваем production-горизонтом и капстоном.


Большая картина

21 модуль курса — четыре крупных блока
Блок 1: ОсновыМодули 00-06. Введение, первый запуск на пальцах, зачем нужны контейнеры (vs VM), установка, первые контейнеры, образы и реестры, слои и storage
-> сборка
Блок 2: BuildМодули 07-10. Dockerfile basics + advanced, volumes, networks. Свои образы и работа с состоянием
Блок 3: ComposeМодули 11-15. Compose basics + advanced, data-services, логи и debug, безопасность
-> DE-стек
Блок 4: ProductionМодули 16-20. Python-образы, реальные DE-стеки, тесты и CI, production-горизонт, capstone

Модуль за модулем

Модуль 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’ами.


Путь от первой команды до итогового стенда

Путь читателя: одна команда -> production-стенд
docker run hello-worldПервая команда курса. К концу модуля 4 ты понимаешь все четыре уровня — CLI, daemon, containerd, runc
-> модуль 7
docker buildСвой Dockerfile для Python-скрипта. К концу модуля 8 — multi-stage сборка с HEALTHCHECK и non-root user
compose upСвой стенд из 2-3 сервисов. К концу модуля 12 — profiles, override, secrets, healthchecks
-> модуль 17
Airflow + KafkaProduction-like compose-стенд для локальной разработки DAG'ов с реальными data services
pytest + testcontainersИнтеграционные тесты pipeline'а, которые работают в CI и не оставляют грязи
-> модуль 20
CapstoneСвой DE-стенд от Dockerfile до compose.yaml. Готов к показу на собеседовании

Структура каждого модуля

Один модуль — это:

  1. 3-8 уроков. Каждый урок — 15-30 минут чтения + руки в терминале.
  2. Квиз после каждого урока. 4-5 вопросов на конкретику урока.
  3. Итоговый экзамен модуля. 6 вопросов, объединяющих темы всего модуля. Pass-threshold 70%.
  4. Лаба или практическое задание. В части модулей — мини-задание на свой стенд.
  5. Раздел 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 на первый год работы.

В следующем уроке — как с этим всем работать: темп, упражнения, чем подкреплять чтение, куда жаловаться, если что-то непонятно.


Проверка знанийKnowledge check
По какой логике построены 21 модуль курса?
ОтветAnswer
Курс делится на четыре крупных блока. Блок 1 (модули 00-06) — основы: первый запуск на пальцах, зачем нужны контейнеры, установка, первые контейнеры, образы, слои. Блок 2 (07-10) — сборка и состояние: Dockerfile, volumes, networks. Блок 3 (11-15) — композиция и эксплуатация: Compose, data services, debug, security. Блок 4 (16-20) — production и DE-стек: Python-образы, Airflow+Kafka, testcontainers+CI, prod-горизонт, capstone. Прогрессия идёт от одного docker run hello-world до собственного DE-стенда с Airflow, Postgres и Kafka. Каждый модуль закрывает один блок и заканчивается экзаменом из 6 вопросов с pass-threshold 70%.

Проверьте понимание

Результат: 0 из 0
Концептуальный
Вопрос 1 из 5. Какой блок модулей курса предоставляет фундамент DE, который НЕ рекомендуется пропускать?

Закончили урок?

Отметьте его как пройденный, чтобы отслеживать свой прогресс

Войдите чтобы оценить урок

Прогресс модуля
0 из 3