Learning Platform
Глоссарий Troubleshooting
Урок 01.01 · 14 мин
Начальный
dockercontainersdata-engineering

Про этот курс

Это бесплатный практический курс по Docker для будущего Junior Data Engineer. Курс рассчитан на 50-55 часов, разбит на 21 модуль, на русском, актуален на май 2026. Целевые версии: Docker Engine 28, Compose v2.39, BuildKit v0.26, плюс альтернативы — OrbStack, Rancher Desktop, Podman.

Курс закрывает один из самых частых пробелов в подготовке Junior DE: понимание того, как контейнеры устроены изнутри, и как ими пользоваться в реальных задачах — от локального стенда с Postgres до CI-пайплайна, который собирает Python-образ для ETL-джоба.


Кому этот курс подходит

Портрет читателя курса
Junior DEData Engineer 0-2 года опыта, или человек, который через 3-6 месяцев планирует собеседоваться на эту роль
нужно
Уверенный DockerНе 'умею copy-paste docker run', а 'понимаю что произойдёт, и могу починить если упало'
Python + SQLУверенный Python (functions, modules, pip/uv), SQL на уровне SELECT с JOIN и базовый DDL
Terminalcd, ls, mkdir, переменные окружения, базовое использование bash/zsh. macOS, Linux или Windows + WSL — без разницы
DockerВозможно, запускали docker run для постгреса. Но что такое слои образа или почему контейнер не пишет в свой volume — туман

Курс не для тех, кто никогда не открывал терминал — там сначала нужен курс по основам Linux. Курс не для опытных SRE, которые три года живут с containerd на bare-metal — им будет скучно. А вот если ты собираешь свой первый Airflow-стенд и не уверен, чем docker run отличается от docker create + docker start — добро пожаловать.


Чем этот курс отличается от ютуба и udemy

Курсов по Docker в интернете много. Большинство выглядит так: «вот команда docker run, она запускает контейнер; вот Dockerfile, в нём пишем FROM и CMD; вот docker-compose up, и всё работает». Через неделю после прохождения такого курса у тебя в голове остаются только три команды и смутное ощущение, что Docker — это «как виртуалка, но проще».

Этот курс построен по-другому. Когда мы говорим «контейнер — это процесс с namespaces», мы запускаем lsns на хосте и смотрим, какие namespaces появились. Когда говорим «слои образа кешируются», открываем docker history и смотрим SHA каждого слоя. Когда говорим «volume — это не то же, что bind mount», лезем в /var/lib/docker/volumes/ и убеждаемся, что там реальная директория на хосте.

NOTE

Junior, который понимает механику Docker, через год становится Middle и спокойно дебажит упавший Airflow worker через docker logs и docker exec. Junior, который зазубрил команды, через год по-прежнему гуглит «docker container not starting» и копирует первый ответ со Stack Overflow.

Второе отличие — фокус на реальный DE-стек. У других курсов в примерах Wordpress и nginx. У нас — Postgres 16.4, MinIO, Kafka, Airflow, тестконтейнеры для интеграционных тестов pipeline’а. Образы для Python ETL, multi-stage сборки с uv, BuildKit cache mounts, чтобы CI-сборка не тянула 200 МБ зависимостей каждый раз.


Что у тебя будет в голове после курса

Прогрессия курса от первого run до production-стенда
Модули 00-06Введение, первый запуск на пальцах, зачем нужны контейнеры, установка, первые контейнеры, образы и реестры, слои и storage driver. База: что такое контейнер, чем он отличается от VM, как устроен образ
Модули 07-10Dockerfile basics + advanced, volumes, networks. Учимся собирать свои образы и работать с состоянием
Модули 11-15Compose basics + advanced, data-services (Postgres/MinIO/Redis), логи и debug, безопасность. Связываем сервисы вместе и держим их в чистоте
Модули 16-20Python-образы для DE, реальные стеки (Airflow+Postgres+Kafka), testcontainers + CI, production-горизонт, capstone

Конкретный список навыков, которые останутся:

  • Запустить docker run hello-world и понимать, что произошло на четырёх уровнях: CLI -> Docker daemon -> containerd -> runc + ядро.
  • Собрать Dockerfile для Python ETL-джоба так, чтобы он был меньше 100 МБ (slim base + multi-stage + uv).
  • Развернуть локально стенд с Airflow + Postgres + Kafka через Compose, дебажить упавший worker через docker logs --since 5m -f и docker exec.
  • Написать интеграционный тест на testcontainers-python, который поднимает реальный Postgres в CI и кладёт его после теста.
  • Прочитать docker info, понять, какой storage driver используется, и почему это важно для bind mount на macOS.
  • Не путать volume и bind mount, понимать когда какой нужен, и почему tmpfs бывает полезен для секретов.
  • Знать, чем OrbStack отличается от Docker Desktop, и почему на M-серии маков OrbStack стартует на порядок быстрее.

Почему именно для Data Engineer

DE работает с состоянием — базы данных, очереди, файловые системы. Контейнер по умолчанию stateless: убил его — данные пропали. Большая часть курса — про то, как примирить эти две вещи: использовать удобство контейнеров (одна команда — есть Postgres 16.4) и при этом не терять данные между рестартами.

Второй кусок DE-специфики — это размер образов и время сборки. Python-образ для Airflow DAG с pandas, scikit-learn и connectors может весить 2 ГБ, если собирать «в лоб». Тот же образ при правильном multi-stage с uv весит 250 МБ. В CI разница между 2 ГБ и 250 МБ — это разница между сборкой за 8 минут и за 90 секунд. Это важно, когда твой релиз ждёт сборки.

Третий кусок — это интеграционные тесты. Без контейнеров писать тест, который проверяет, что DAG корректно пишет в Postgres, — это либо мок (бесполезный), либо реальная база на CI-раннере (хрупкий). С testcontainers-python тест поднимает чистый Postgres, выполняется, и контейнер уезжает в небытие — нет «грязного состояния от предыдущего прогона».


Это бесплатно

Курс полностью бесплатный. Нет paid tier, нет «открой все модули за 990 рублей», нет email-капсул с обещанием PDF. Всё содержимое — здесь, открыто, навсегда.

Почему? Потому что хороших бесплатных курсов по Docker на русском мало, а курсов с фокусом на DE — почти нет. Цель — поднять уровень русскоязычных Junior DE на одну ступеньку выше. Это полезно индустрии, и людям, которые в неё заходят.


Что нужно от тебя

Курс читается как книга, но не работает как книга. Чтобы реально вынести знания, нужно:

  1. Открыть терминал параллельно с уроком. В каждом модуле есть блоки «Попробуй сам» — это не риторика. Каждая команда должна быть выполнена руками.
  2. Не пропускать квизы. Они построены так, чтобы поймать «вроде понял» и проверить на «реально понял».
  3. Не торопиться. 50 часов курса лучше растянуть на 8-10 недель, чем уплотнить в две. Темп 4-6 часов в неделю — комфортный.

В следующем уроке посмотрим, что именно в 21 модуле — карта всего курса.


Как создавался курс

Курс создан при участии Claude (Anthropic) как соавтора: ИИ помогал писать материалы, структурировать темы, генерировать примеры кода и диаграммы. Каждая глава проходила ручную сверку с первоисточниками — спецификациями, документацией, исходным кодом рассматриваемых систем — но гарантировать 100% точность невозможно.

Если вы заметили неточность, опечатку или хотите предложить улучшение — напишите в Telegram-группу курса. Это самый ценный вклад в курс, который вы можете сделать.


Углублённое изучение с Claude

Курс рассчитан на самостоятельное изучение, но любая теория быстрее ложится, если задавать вопросы. Рекомендую держать рядом браузерное расширение Claude (claude.com/download) — оно работает с контентом открытой страницы: выделяете кусок урока и спрашиваете напрямую.

Сценарии, которые особенно хорошо работают для углублённого погружения:

  • «Объясни проще» / «дай ещё один пример» — когда формулировка из урока не дошла с первого раза.
  • «Покажи, как это устроено на уровне кода / железа» — когда хочется спуститься на слой ниже того, что даёт урок.
  • «Как это связано с [другая тема курса]» — когда нужно увязать концепцию с тем, что было раньше.
  • «У меня в проекте стек X — как применить?» — когда хочется примерить материал на свой реальный кейс.

Это не замена курсу, а способ ускорить интеграцию материала в вашу картину мира. Если что-то из ответов Claude расходится с уроком — присылайте в Telegram-группу, курс будет уточнён.


Нашли ошибку?

Если заметили неточность, опечатку или хотите предложить улучшение:

Telegram-группа курса
Обсуждение, вопросы, предложения

Telegram-канал

Подписывайтесь, чтобы узнавать об обновлениях и новых курсах:

@levoely_channel
Новости, обновления, новые курсы

Проверка знанийKnowledge check
Чем этот курс отличается от типичных видеокурсов по Docker?
ОтветAnswer
Главное отличие — глубина и DE-фокус. Курс не ограничивается «вот команда docker run, она запускает контейнер». Когда мы говорим «контейнер — это процесс с namespaces», мы тут же запускаем lsns и смотрим. Когда говорим «слой образа кешируется», открываем docker history. Второе отличие — фокус на реальный DE-стек: Postgres, Kafka, Airflow, testcontainers, multi-stage Python-образы с uv, а не Wordpress и nginx. Третье — курс готовит к Middle: понимающий механику Junior через год спокойно дебажит упавший Airflow worker, а зазубривший команды по-прежнему гуглит «docker not starting».

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

Результат: 0 из 0
Концептуальный
Вопрос 1 из 5. Для кого этот курс?

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

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

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

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