Docker и Containerization для Python-разработчика
Практический инженерный курс по Docker для Linux, построенный вокруг реальных задач Python-разработчика. Курс не ограничивается перечислением команд: каждая тема объясняет, что именно происходит в Linux kernel и в Docker Engine, почему механизм устроен именно так, какие у него ограничения и какие типичные ошибки совершают разработчики.
Курс охватывает путь от установки Docker Engine в Ubuntu до production-ready pipeline с multi-stage builds, non-root execution, healthchecks, resource limits, vulnerability scanning и SBOM. Отдельное внимание уделено тому, что специфично именно для Python: выбор base image, dependency locking, build cache, PYTHONUNBUFFERED и logging, PID 1 и обработка SIGTERM, worker configuration для Gunicorn и Uvicorn, поведение memory allocator под cgroup limits.
Материал построен последовательно: каждый следующий раздел опирается только на понятия, введённые ранее. Все команды применимы в обычной Linux-системе без Docker Desktop. Все примеры воспроизводимы и существуют не только в виде code blocks, но и в виде рабочих файлов в resources/examples/.
Курс написан на русском языке. Технические термины, команды, имена файлов, параметры, код и сообщения терминала остаются на английском — так, как вы встретите их в документации и в работе.
Оглавление
Разделы читаются по порядку. Описание каждого раздела — ниже, в «Структуре курса». То же оглавление отдельным файлом — CONTENTS.md.
00. О курсе — Цели обучения · Карта компетенций · Карта курса и зависимости между разделами · Варианты учебного расписания · Система оценивания
Раздел 1. Подготовка среды — 1.1. Требования к Linux · 1.2. Установка Docker Engine · 1.3. Docker daemon · 1.4. Первый container · 1.5. Docker socket и группа docker · 1.6. Rootless Docker · Задания
Раздел 2. Основы Containerization — 2.1. Процессы и containers · 2.2. Containers против virtual machines · 2.3. Linux namespaces · 2.4. Cgroups · 2.5. Capabilities · 2.6. Container runtime и OCI · 2.7. Терминология Docker · Задания
Раздел 3. Работа с Images — 3.1. Архитектура image · 3.2. Слои и copy-on-write · 3.3. Tags и digests · 3.4. Управление images · 3.5. Save, load, export, import · Задания
Раздел 4. Containers и lifecycle — 4.1. Состояния и переходы · 4.2. Режимы запуска · 4.3. Exec, logs, inspect · 4.4. Сигналы и graceful shutdown · 4.5. PID 1 и init · 4.6. Restart policies и exit codes · Задания
Раздел 5. Dockerfile — 5.1. Build context и .dockerignore · 5.2. Базовые инструкции · 5.3. COPY, ADD и RUN · 5.4. CMD и ENTRYPOINT · 5.5. Build cache · 5.6. BuildKit · 5.7. Multi-stage builds · 5.8. HEALTHCHECK · 5.9. Воспроизводимые сборки · Задания
Раздел 6. Python внутри Container — 6.1. Выбор base image · 6.2. Управление зависимостями · 6.3. Python Dockerfile · 6.4. Environment variables · 6.5. Сигналы и PID 1 в Python · 6.6. Logging · 6.7. Non-root user и permissions · 6.8. CLI-приложение · 6.9. Flask · 6.10. FastAPI · 6.11. Worker processes · 6.12. Тестирование в container · 6.13. Resource limits и память Python · Задания
Раздел 7. Storage — 7.1. Файловая система container · 7.2. Volumes · 7.3. Bind mounts · 7.4. tmpfs и read-only filesystem · 7.5. Права доступа, UID и GID · 7.6. Backup и restore · Задания
Раздел 8. Docker Networking — 8.1. Основы Docker networking · 8.2. Bridge networks · 8.3. Port publishing · 8.4. Docker DNS · 8.5. Network modes · 8.6. Диагностика · Задания
Раздел 9. Docker Compose — 9.1. Основы Compose · 9.2. Справочник по services · 9.3. Networks и volumes · 9.4. Healthchecks и зависимости · 9.5. Environment и secrets · 9.6. Несколько файлов и profiles · 9.7. Практический stack · Задания
Раздел 10. Development workflow — 10.1. Development и production образы · 10.2. Hot reload · 10.3. Отладка в container · 10.4. Database migrations · 10.5. Автоматизация · Задания
Раздел 11. Production-ready containers — 11.1. Принципы production · 11.2. Runtime hardening · 11.3. Healthchecks и readiness · 11.4. Resource limits и память Python · 11.5. Конфигурация и secrets · 11.6. Supply chain · Задания
Раздел 12. Security — 12.1. Модель угроз · 12.2. Daemon и socket · 12.3. Пользователи и namespaces · 12.4. Capabilities и privileged · 12.5. Seccomp, AppArmor, SELinux · 12.6. Secrets · 12.7. Supply chain security · Задания
Раздел 13. Observability и диагностика — 13.1. Логи и logging drivers · 13.2. Inspect, events, stats · 13.3. Нехватка ресурсов · 13.4. Дисковое пространство и очистка · 13.5. Глубокая диагностика · 13.6. Таблица диагностики · Задания
Раздел 14. Registry — 14.1. Основы registry · 14.2. Аутентификация · 14.3. Локальный registry · 14.4. Стратегия tagging · Задания
Раздел 15. Testing — 15.1. Стратегия тестирования · 15.2. Тесты внутри container · 15.3. Integration tests через Compose · 15.4. Testcontainers for Python · 15.5. Валидация образа · Задания
Раздел 16. CI/CD — 16.1. Проектирование pipeline · 16.2. GitHub Actions · 16.3. Build cache в CI · 16.4. Сканирование и SBOM · 16.5. GitLab CI · Задания
Раздел 17. Docker internals — 17.1. Engine API и Unix socket · 17.2. containerd, shim и runc · 17.3. Namespaces: углублённо · 17.4. Cgroups v2 · 17.5. OverlayFS · Задания
Раздел 18. Docker и Kubernetes — 18.1. Какие задачи решают Docker и Kubernetes · 18.2. Объекты Kubernetes · 18.3. От Compose к Kubernetes · 18.4. Когда нужна orchestration · Задания
Раздел 19. Ограничения Docker — 19.1. Где containers усложняют систему · 19.2. Границы изоляции · 19.3. Когда Docker применять не следует · 19.4. Каталог антипаттернов · Задания
Практические проекты — 1. Python CLI · 2. FastAPI service · 3. Multi-service stack · 4. Production pipeline · обзор
Проверка знаний — Quizzes · Checkpoints · Debugging challenges · Теоретический тест · Практический экзамен · Grading rubric
Справочники — Docker CLI · Dockerfile · Compose · Networking · Storage · Production · Security · Python container · Debugging · Cleanup · Антипаттерны · Карта решений · Glossary · Дальнейшее развитие
Для кого этот курс
Курс рассчитан на Python-разработчика, который уже пишет код профессионально, но использует Docker поверхностно — по инструкции от коллег или по скопированному Dockerfile.
Необходимые начальные знания:
- Python на рабочем уровне (курс не объясняет базовый синтаксис);
- уверенная работа в Linux command line: файлы, каталоги, права доступа, перенаправление потоков;
- понимание процессов, environment variables, exit codes;
- базовое владение
Git; - понимание, что такое HTTP-запрос и TCP-порт.
Не требуется: опыт администрирования Linux, знание Kubernetes, опыт настройки CI/CD.
Целевая платформа: Linux, современная LTS-версия Ubuntu (22.04 / 24.04 / 26.04), Docker Engine 28–29, Docker Compose v2, Bash, Python 3.13. Курс не строится вокруг Docker Desktop — он упоминается только в сравнительном контексте.
Что учащийся будет уметь
После прохождения курса учащийся сможет:
- Объяснить, как Linux containers работают на уровне processes, namespaces, cgroups, filesystem и networking.
- Установить и настроить Docker Engine в Linux, включая rootless mode.
- Читать и писать качественные
Dockerfileдля Python-приложений. - Запускать, отлаживать и обслуживать containers, понимая их lifecycle и signal handling.
- Осознанно работать с images, volumes, bind mounts, networks и registries.
- Проектировать многокомпонентные системы на
Docker Compose. - Контейнеризировать Python CLI, Flask, FastAPI и background worker.
- Оптимизировать image size, build time и runtime behaviour, опираясь на измерения, а не на догадки.
- Применять базовые требования безопасности и объяснять, почему конкретная настройка опасна.
- Интегрировать Docker в testing и CI/CD.
- Диагностировать реальные проблемы containers по симптомам.
- Понимать границы применения Docker и отличие Docker от Kubernetes.
Подробная карта компетенций с уровнями владения: 00-course-overview/01-competency-map.md.
Как пользоваться курсом
В каком порядке читать материалы
Разделы пронумерованы в порядке изучения. Каждый раздел содержит собственный MAIN.md — локальное оглавление со списком материалов, целями и критериями завершения. Внутри раздела читайте файлы в порядке числовых prefixes.
Разделы 01–09 составляют обязательное ядро и читаются строго последовательно: пропуск любого из них ломает понимание последующих. Разделы 10–19 допускают частичную перестановку — зависимости описаны в карте курса.
Когда выполнять упражнения
В каждом разделе есть файл exercises.md. Правило простое: упражнения раздела выполняются до перехода к следующему разделу. Отдельные уроки также содержат встроенное практическое задание с подсказками и решением под спойлером — сначала выполните задание, потом смотрите решение.
Все команды выполняйте в реальной системе. Чтение команд без выполнения не даёт нужного навыка: значительная часть материала посвящена интерпретации фактического вывода.
Когда переходить к projects
Проекты привязаны к контрольным точкам:
| Проект | Выполнять после раздела |
|---|---|
| 01. Python CLI | 06. Python containers |
| 02. FastAPI service | 08. Networking |
| 03. Multi-service stack | 10. Development workflow |
| 04. Production pipeline | 16. CI/CD |
Проект выполняется самостоятельно по TASK.md. SOLUTION.md открывается только после собственной попытки, CHECKLIST.md используется для самопроверки перед тем, как считать проект завершённым.
Как использовать assessments
- Quiz после каждого раздела — assessments/module-quizzes.md. Занимает 10–15 минут, проверяет понимание, а не запоминание.
- Checkpoint после группы разделов — assessments/checkpoints.md. Практическая задача с критериями приёмки.
- Debugging challenges — assessments/debugging-challenges.md. 20 сломанных конфигураций, которые нужно починить. Начинайте после раздела 13.
- Итоговый экзамен — теория и практика.
- Оценка — assessments/grading-rubric.md, шкала 0–100, проходной результат 70.
Как отмечать progress
Используйте таблицу «Прогресс курса» в этом файле. Отредактируйте её локально: замените ⬜ на ✅ в столбцах «Теория», «Практика», «Проверка». Раздел считается пройденным только когда закрыты все три столбца.
Статус самого репозитория (что уже написано автором курса) отслеживается отдельно в COURSE_STATUS.md — не путайте его с вашим личным прогрессом.
Где находятся reference materials
Все справочники собраны в references/. Они не предназначены для чтения подряд — это материал для быстрого поиска во время работы. Рабочие примеры кода — в resources/examples/, текстовые диаграммы — в resources/diagrams/, проверенные официальные источники — в resources/source-links.md.
Структура курса
0. Обзор курса
Цели обучения, карта компетенций, зависимости между разделами, три варианта учебного расписания и описание системы оценивания. Читается до начала обучения, чтобы выбрать темп и понимать, к чему ведёт курс.
Предварительные знания: нет. Результат: учащийся выбрал расписание и понимает структуру курса.
1. Подготовка среды
Требования к Linux, проверка architecture и kernel, установка Docker Engine из официального apt repository, управление daemon через systemctl, Docker socket, группа docker и её риски, rootless mode, полное удаление Docker. Раздел даёт рабочую среду, на которой строится весь остальной курс.
Предварительные знания: Linux command line, sudo, apt.
Результат: учащийся имеет работающий Docker Engine, понимает, чем управляет systemctl, и осознаёт последствия добавления пользователя в группу docker.
2. Основы Containerization
Что такое process и почему container — это изолированный Linux process, а не «лёгкая виртуальная машина». Namespaces, cgroups, capabilities, root filesystem, container runtime, OCI, архитектура Docker Engine, containerd и runc. Вводится базовая терминология: image, container, registry, repository, tag, digest.
Предварительные знания: раздел 01, понимание процессов в Linux. Результат: учащийся может объяснить, какие ресурсы container разделяет с host, и показать это командами.
3. Работа с Images
Архитектура image: layers, content-addressable storage, immutable layers, writable container layer и copy-on-write. Manifest и config, tags против digests, pull policy, локальный кэш, docker history, dangling images, разница между save/load и export/import. Учитывается изменение поведения в Docker Engine 29 с containerd image store.
Предварительные знания: раздел 02. Результат: учащийся читает metadata image, объясняет, из чего состоит его размер, и переносит image между машинами без registry.
4. Containers и lifecycle
Полный жизненный цикл: create, start, run, stop, kill, restart, pause, rm. Foreground и detached mode, interactive и TTY, стандартные потоки, exec, logs, inspect, stats. Отдельно разбираются exit codes, restart policies, обработка SIGTERM и SIGKILL, проблема PID 1, zombie processes и флаг --init.
Предварительные знания: разделы 02, 03. Результат: учащийся корректно останавливает приложение, читает exit code и объясняет, почему container не завершился за 10 секунд.
5. Dockerfile
Подробный разбор всех инструкций Dockerfile с указанием назначения, синтаксиса, типичной ошибки и случаев, когда инструкцию применять не следует. Build context и .dockerignore, exec form против shell form, различие CMD и ENTRYPOINT, layer cache и build cache, BuildKit, cache mounts, secret mounts, multi-stage builds, reproducible builds.
Предварительные знания: разделы 03, 04.
Результат: учащийся пишет Dockerfile, который пересобирается за секунды при изменении кода и не тянет dependencies заново.
6. Python внутри Container
Центральный раздел курса. Выбор base image и цена Alpine для Python, glibc против musl, wheels и compilation dependencies, pip / requirements.txt / pyproject.toml / Poetry / uv с разбором trade-offs, нужен ли venv внутри container, PYTHONDONTWRITEBYTECODE и PYTHONUNBUFFERED, logging в stdout, non-root user и filesystem permissions, graceful shutdown, Gunicorn и Uvicorn, worker processes, CLI-приложения, background workers, тестирование и resource limits.
Предварительные знания: раздел 05. Результат: учащийся самостоятельно создаёт безопасный и оптимизированный image для Python-приложения.
7. Storage
Writable container layer и эфемерность данных, named и anonymous volumes, bind mounts, tmpfs, read-only root filesystem, ownership и проблема UID/GID, SELinux context, backup и restore volumes, orphaned volumes, данные баз данных и монтирование исходного кода в разработке. Разбирается, почему bind mount может «скрыть» файлы внутри image.
Предварительные знания: разделы 04, 06.
Результат: учащийся сохраняет данные между пересозданиями container и чинит проблемы с правами доступа без chmod 777.
8. Docker Networking
Как Docker использует Linux network namespaces, virtual Ethernet pairs, bridges, routing и NAT. Default bridge против user-defined bridge, port publishing и разница между published и exposed ports, встроенный DNS и service discovery, host и none networks, обзор overlay и IPv6. Отдельно разбираются классические ошибки с localhost внутри container.
Предварительные знания: раздел 04, базовое понимание TCP/IP. Результат: учащийся связывает containers между собой, публикует порты осознанно и диагностирует недоступность сервиса по шагам.
9. Docker Compose
Compose Specification и compose.yaml: services, build, environment и env files, ports, volumes, networks, configs, secrets, healthcheck, depends_on, restart, profiles, resource limits, project name, overrides и несколько Compose-файлов, interpolation, anchors. Подробно объясняется, почему depends_on не гарантирует готовность приложения принимать запросы.
Предварительные знания: разделы 07, 08. Результат: учащийся описывает stack из FastAPI, PostgreSQL, Redis и worker с healthchecks и изолированными networks.
10. Development workflow
Разделение development и production images, bind mounts и hot reload, отладка через IDE и remote debugger, .env и secrets в разработке, database migrations, disposable environments, Makefile и helper scripts, pre-commit, linting, type checking, unit и integration tests. Формируется целостный рабочий процесс Python-разработчика.
Предварительные знания: раздел 09. Результат: учащийся собирает повторяемое окружение разработки, которое поднимается одной командой.
11. Production-ready containers
Immutable infrastructure, «один процесс на container» как guideline, а не закон, non-root execution, read-only root filesystem, pinned versions и digests, healthcheck, readiness против liveness, structured logging, graceful shutdown и timeouts, resource limits и поведение памяти Python, worker count, конфигурация и secrets, image scanning, SBOM, provenance, rollback, registry authentication.
Предварительные знания: разделы 06, 09. Результат: учащийся превращает development image в production-ready image и доказывает это проверками.
12. Security
Почему изоляция container не равна полноценной security boundary. Привилегии Docker daemon и Docker socket, риски группы docker, root внутри container, user namespaces, rootless Docker, Linux capabilities, privileged containers, seccomp, AppArmor, SELinux, secrets и build secrets, registry credentials, image signing, supply-chain risks. Для каждой опасной настройки — сценарий риска и безопасная альтернатива.
Предварительные знания: разделы 02, 11. Результат: учащийся выявляет опасные настройки в чужой конфигурации и обосновывает исправления.
13. Observability и диагностика
Logs и logging drivers, inspect, events, stats, top, исследование файловой системы и сети container, DNS troubleshooting, resource exhaustion, OOM killer, exit codes 137 и 143, failing healthcheck, restart loops, заполнение диска, daemon logs через journalctl, nsenter, strace и tcpdump. Раздел содержит таблицу диагностики из более чем 20 типичных проблем.
Предварительные знания: разделы 04, 07, 08. Результат: учащийся переходит от симптома к root cause по воспроизводимой методике.
14. Registry
Docker Hub и private registry, repository и namespaces, tags и digests, immutable tags, authentication и хранение credentials, push и pull, стратегия именования и cleanup policy, rate limits как версионно-зависимая тема, запуск локального registry, TLS и insecure registries, аутентификация из CI.
Предварительные знания: разделы 03, 11. Результат: учащийся публикует image в registry и проверяет, что развёрнут именно тот artifact, который был собран.
15. Testing
Unit и integration tests, container-based tests, disposable databases, изоляция тестов, fixtures, Docker Compose для тестов, healthchecks и wait strategies, pytest, Testcontainers for Python, тестирование сети и файловой системы, build validation, обзор container structure tests.
Предварительные знания: разделы 09, 10. Результат: учащийся запускает integration tests с реальным PostgreSQL, которые создают и удаляют окружение автоматически.
16. CI/CD
Практический pipeline: formatting, linting, type checking, unit tests, сборка image с build cache, integration tests, сканирование, tagging по commit SHA, публикация в registry без раскрытия secrets. Полностью рабочий пример для GitHub Actions и краткий эквивалент для GitLab CI.
Предварительные знания: разделы 14, 15. Результат: учащийся имеет pipeline, который собирает, проверяет и публикует image автоматически.
17. Docker internals
Углублённый разбор: Docker Engine API и Unix socket, архитектура daemon–client, containerd, shim, runc, OCI bundle, cgroups v2, OverlayFS, все типы namespaces, seccomp и capabilities на уровне ядра, полный lifecycle процесса container. Раздел объясняет то, что в остальных разделах принималось как данность.
Предварительные знания: разделы 02, 12. Результат: учащийся обращается к Docker API напрямую, входит в namespace container и находит его файловую систему на host.
18. Docker и Kubernetes
Обзорный, но технически точный раздел. Какую задачу решает Docker и какую — Kubernetes, почему они не прямые конкуренты, image portability и container runtime, pod, deployment, service, config, secret, volume, health probes, resource requests и limits, соответствие между Compose и Kubernetes, когда Compose достаточно и когда orchestration становится необходимой.
Предварительные знания: разделы 09, 11. Результат: учащийся обоснованно отвечает на вопрос «нужен ли нам Kubernetes».
19. Ограничения Docker
Ситуации, где containers усложняют систему, не дают достаточной изоляции, создают проблемы с persistent state, затрудняют отладку и требуют дополнительной observability. Почему containers не заменяют virtual machines, configuration management и orchestration и не исправляют плохую архитектуру приложения. Список из более чем 30 антипаттернов и раздел «Когда Docker применять не следует».
Предварительные знания: разделы 11, 12, 13. Результат: учащийся способен аргументированно отказаться от контейнеризации там, где она вредна.
Практические проекты
Проект 1. Python CLI
Контейнеризованное CLI-приложение: разбор arguments, чтение configuration, вывод результата в stdout, корректные exit codes, unit tests, сборка через Dockerfile. Проект закрепляет базовую работу с images и lifecycle.
Проект 2. FastAPI service
REST API на FastAPI под Uvicorn: health endpoint, конфигурация через environment variables, structured logging, graceful shutdown, non-root user, multi-stage build, tests. Проект соединяет разделы про Dockerfile, Python и networking.
Проект 3. Multi-service stack
Полный stack на Docker Compose: FastAPI, PostgreSQL, Redis, background worker, healthchecks, named volumes, user-defined networks, database migrations и integration tests. Проект проверяет умение проектировать систему, а не отдельный container.
Проект 4. Production pipeline
Production-ready image и CI pipeline: tagging, push в registry, vulnerability scan, test stage, build cache, SBOM, deployment checklist и rollback plan. Итоговый проект курса.
Общее описание проектов и порядок их выполнения: projects/MAIN.md.
Система проверки знаний
| Инструмент | Назначение | Ссылка |
|---|---|---|
| Quizzes | Короткий тест после каждого раздела | module-quizzes.md |
| Checkpoints | Практическая контрольная точка после группы разделов | checkpoints.md |
| Debugging challenges | 20 сломанных конфигураций для самостоятельного ремонта | debugging-challenges.md |
| Practical assignments | Практические задания внутри разделов | exercises.md в каждом разделе |
| Итоговый теоретический тест | Проверка понимания механизмов | final-theory-exam.md |
| Итоговый практический экзамен | Контейнеризация приложения с нуля | final-practical-exam.md |
| Grading rubric | Шкала 0–100, проходной результат 70 | grading-rubric.md |
Обзор системы оценивания: assessments/MAIN.md и 00-course-overview/04-assessment-system.md.
Варианты учебного расписания
Планы A и B имеют одинаковый бюджет времени и охват и различаются только плотностью занятий. План C сокращён осознанно: вместо поверхностного прохода по всем разделам он даёт прочное ядро.
| Вариант | Длительность | Нагрузка | Охват | Кому подходит |
|---|---|---|---|---|
| A. Интенсивный | 4 недели | 2–3 часа в день | Разделы 00–16, 18, 19 + проекты 1–2 | Есть выделенное время, нужен быстрый выход на рабочий уровень |
| B. Стандартный | 8 недель | 1–1.5 часа в день | То же | Обучение параллельно с основной работой |
| C. Спокойный | 12 недель | 4–5 часов в неделю | Разделы 00–11, 13 + проекты 1–2 | Нерегулярный график, упор на закрепление |
Элементы, не вошедшие в базовый план (проекты 3–4, debugging challenges, раздел 17, итоговый экзамен), собраны в этап «Завершение курса» — примерно 56 часов.
Подробные планы с понедельной разбивкой, контрольными точками и сроками проектов: 00-course-overview/03-learning-schedules.md.
Прогресс курса
Отмечайте свой прогресс здесь. Раздел закрыт, когда заполнены все три столбца.
| Раздел | Теория | Практика | Проверка | Статус |
|---|---|---|---|---|
| 00. Обзор курса | ⬜ | — | — | Не начат |
| 01. Подготовка среды | ⬜ | ⬜ | ⬜ | Не начат |
| 02. Основы Containerization | ⬜ | ⬜ | ⬜ | Не начат |
| 03. Работа с Images | ⬜ | ⬜ | ⬜ | Не начат |
| 04. Containers и lifecycle | ⬜ | ⬜ | ⬜ | Не начат |
| 05. Dockerfile | ⬜ | ⬜ | ⬜ | Не начат |
| 06. Python внутри Container | ⬜ | ⬜ | ⬜ | Не начат |
| → Проект 1. Python CLI | — | ⬜ | ⬜ | Не начат |
| 07. Storage | ⬜ | ⬜ | ⬜ | Не начат |
| 08. Networking | ⬜ | ⬜ | ⬜ | Не начат |
| → Проект 2. FastAPI service | — | ⬜ | ⬜ | Не начат |
| 09. Docker Compose | ⬜ | ⬜ | ⬜ | Не начат |
| 10. Development workflow | ⬜ | ⬜ | ⬜ | Не начат |
| → Проект 3. Multi-service stack | — | ⬜ | ⬜ | Не начат |
| 11. Production | ⬜ | ⬜ | ⬜ | Не начат |
| 12. Security | ⬜ | ⬜ | ⬜ | Не начат |
| 13. Observability | ⬜ | ⬜ | ⬜ | Не начат |
| 14. Registry | ⬜ | ⬜ | ⬜ | Не начат |
| 15. Testing | ⬜ | ⬜ | ⬜ | Не начат |
| 16. CI/CD | ⬜ | ⬜ | ⬜ | Не начат |
| → Проект 4. Production pipeline | — | ⬜ | ⬜ | Не начат |
| 17. Docker internals | ⬜ | ⬜ | ⬜ | Не начат |
| 18. Docker и Kubernetes | ⬜ | ⬜ | ⬜ | Не начат |
| 19. Ограничения Docker | ⬜ | ⬜ | ⬜ | Не начат |
| Итоговый экзамен | ⬜ | ⬜ | ⬜ | Не начат |
Обозначения: ⬜ — не сделано, ✅ — сделано, — — неприменимо.
Быстрые ссылки
Справочники
- Glossary — словарь терминов
- Docker CLI cheat sheet
- Dockerfile cheat sheet
- Docker Compose cheat sheet
- Networking cheat sheet
- Storage cheat sheet
Checklists
- Debugging checklist
- Security checklist
- Production checklist
- Python container checklist
- Cleanup checklist
Итоговые материалы
- Карта решений: задача → подход → альтернативы → риски
- Каталог антипаттернов
- План дальнейшего развития
Материалы и источники
Статус репозитория
Курс создаётся последовательно. Актуальное состояние каждого раздела — в COURSE_STATUS.md. Файлы, отмеченные там как «В работе» или «Не начат», могут отсутствовать или быть неполными.