Карта компетенций
О чём этот файл
Карта компетенций связывает каждый навык с разделом, где он формируется, и с проверкой, которая подтверждает его освоение. Используйте её двумя способами:
- до курса — чтобы понять, что именно вы получите;
- после каждого раздела — чтобы честно отметить достигнутый уровень.
Шкала уровней
| Уровень | Название | Что это означает на практике |
|---|---|---|
| L0 | Незнаком | Термин не встречался или не имеет смысла |
| L1 | Узнаёт | Понимает термин в чужом тексте, может объяснить своими словами, но не применяет |
| L2 | Применяет по образцу | Выполняет задачу, имея пример или документацию перед глазами |
| L3 | Применяет самостоятельно | Решает типовую задачу без образца, объясняет свои решения |
| L4 | Проектирует и диагностирует | Выбирает подход из нескольких, обосновывает trade-offs, чинит чужие ошибки, знает границы применимости |
Целевой уровень курса — L3 по всем базовым компетенциям и L4 по ключевым (отмечены звёздочкой в таблицах ниже). L4 по всем компетенциям сразу не достигается учебным курсом — он требует эксплуатационного опыта.
Домен 1. Linux и внутреннее устройство containers
| Компетенция | Целевой уровень | Формируется в | Проверяется |
|---|---|---|---|
| Объяснить container как изолированный Linux process | L4 ★ | 02 | Quiz 02, Checkpoint 1 |
| Отличить container от virtual machine и назвать цену каждого подхода | L3 | 02, 19 | Quiz 02, Итоговый тест |
| Перечислить типы namespaces и показать их для запущенного container | L3 | 02, 17 | Exercises 02, 17 |
Прочитать cgroup limits container и связать их с docker run флагами | L3 | 02, 17 | Exercises 17 |
| Объяснить роль Linux capabilities и что Docker отбирает по умолчанию | L3 | 02, 12 | Quiz 12 |
Описать цепочку Docker CLI → daemon → containerd → shim → runc | L3 | 02, 17 | Итоговый тест |
| Найти файловую систему container на host и объяснить работу OverlayFS | L3 | 03, 17 | Exercises 17 |
| Обратиться к Docker Engine API через Unix socket | L2 | 17 | Exercises 17 |
Домен 2. Эксплуатация Docker Engine
| Компетенция | Целевой уровень | Формируется в | Проверяется |
|---|---|---|---|
| Установить Docker Engine из официального репозитория и проверить установку | L3 | 01 | Exercises 01 |
Управлять daemon через systemctl, читать его логи | L3 | 01, 13 | Exercises 01 |
Объяснить риски группы docker и настроить rootless mode | L4 ★ | 01, 01, 12 | Quiz 12, Итоговый тест |
Настроить daemon.json (logging driver, storage, registry) | L2 | 01, 13 | Exercises 13 |
| Полностью удалить Docker и очистить данные | L2 | 01 | Exercises 01 |
Домен 3. Images
| Компетенция | Целевой уровень | Формируется в | Проверяется |
|---|---|---|---|
| Объяснить строение image: layers, manifest, config, content-addressable storage | L4 ★ | 03 | Quiz 03, Итоговый тест |
| Объяснить copy-on-write и writable container layer | L3 | 03 | Quiz 03 |
| Осознанно выбирать между tag и digest, понимать неизменность digest | L4 ★ | 03, 14 | Quiz 14, Checkpoint 4 |
Анализировать размер image через docker history и image inspect | L3 | 03 | Exercises 03 |
Переносить image между машинами через save/load и объяснить отличие от export/import | L3 | 03 | Exercises 03 |
| Управлять локальным кэшем images и удалять dangling images безопасно | L3 | 03, 13 | Exercises 13 |
Домен 4. Containers и lifecycle
| Компетенция | Целевой уровень | Формируется в | Проверяется |
|---|---|---|---|
Управлять полным lifecycle: create, start, stop, kill, rm | L3 | 04 | Exercises 04 |
| Осознанно выбирать foreground/detached, interactive/TTY | L3 | 04 | Exercises 04 |
| Читать exit codes и связывать их с причиной завершения | L4 ★ | 04, 13 | Debugging challenges |
Обеспечить graceful shutdown приложения по SIGTERM | L4 ★ | 04, 06 | Проект 2, Итоговый экзамен |
Объяснить проблему PID 1 и применить --init там, где нужно | L3 | 04 | Quiz 04 |
| Выбрать restart policy под задачу | L3 | 04 | Exercises 04 |
Домен 5. Сборка образов
| Компетенция | Целевой уровень | Формируется в | Проверяется |
|---|---|---|---|
Объяснить build context и сократить его через .dockerignore | L4 ★ | 05 | Проект 1 |
Применять все базовые инструкции Dockerfile по назначению | L3 | 05, 05 | Exercises 05 |
Объяснить разницу CMD и ENTRYPOINT, exec form и shell form | L4 ★ | 05 | Quiz 05, Debugging challenge 11 |
| Управлять build cache: диагностировать и чинить его инвалидацию | L4 ★ | 05 | Debugging challenge 9, Проект 4 |
| Применять BuildKit: cache mounts, secret mounts, bind mounts, heredocs | L3 | 05 | Exercises 05 |
| Писать multi-stage builds и выбирать target stage | L4 ★ | 05 | Проект 2 |
Настроить HEALTHCHECK и объяснить, когда он не нужен | L3 | 05, 11 | Проект 3 |
| Обеспечить воспроизводимость сборки: pinning, digests, lock files | L3 | 05 | Проект 4 |
Домен 6. Python в containers
| Компетенция | Целевой уровень | Формируется в | Проверяется |
|---|---|---|---|
Выбрать base image и обосновать выбор slim против Alpine | L4 ★ | 06 | Quiz 06, Итоговый тест |
Объяснить влияние glibc/musl на Python wheels | L3 | 06 | Quiz 06 |
Зафиксировать зависимости и объяснить trade-offs pip/Poetry/uv | L4 ★ | 06 | Проект 2 |
Написать Python Dockerfile с корректным порядком слоёв | L4 ★ | 06 | Проект 1, Проект 2 |
Объяснить, когда venv внутри container нужен, а когда нет | L3 | 06 | Quiz 06 |
Настроить PYTHONUNBUFFERED, PYTHONDONTWRITEBYTECODE и понимать их эффект | L3 | 06 | Debugging challenge 2 |
| Настроить structured logging в stdout/stderr | L3 | 06, 11 | Проект 2 |
| Запустить приложение от non-root user и решить проблемы прав | L4 ★ | 06, 07 | Проект 2, Debugging challenge 7 |
| Контейнеризировать CLI-приложение с корректными exit codes | L3 | 06 | Проект 1 |
| Контейнеризировать Flask и FastAPI, не используя development server в production | L4 ★ | 06, 06 | Проект 2 |
| Рассчитать worker count для Gunicorn/Uvicorn с учётом CPU limits | L3 | 06, 11 | Проект 4 |
| Контейнеризировать background worker | L3 | 06 | Проект 3 |
Запускать pytest внутри container | L3 | 06, 15 | Проект 3 |
| Понимать поведение памяти Python под cgroup limits | L3 | 06 | Debugging challenge 13 |
Домен 7. Storage
| Компетенция | Целевой уровень | Формируется в | Проверяется |
|---|---|---|---|
| Объяснить эфемерность writable layer | L3 | 07 | Quiz 07 |
Выбрать между named volume, anonymous volume, bind mount и tmpfs | L4 ★ | 07, 07, 07 | Проект 3 |
Решить проблему UID/GID без chmod 777 | L4 ★ | 07 | Debugging challenge 7 |
| Объяснить, почему bind mount скрывает файлы image | L3 | 07 | Debugging challenge 8 |
| Сделать backup и restore volume | L3 | 07 | Exercises 07 |
| Запустить container с read-only root filesystem | L3 | 07, 11 | Проект 4 |
Домен 8. Networking
| Компетенция | Целевой уровень | Формируется в | Проверяется |
|---|---|---|---|
| Объяснить network namespace, veth pair и bridge | L3 | 08 | Quiz 08 |
| Отличать default bridge от user-defined bridge и знать, зачем второй | L4 ★ | 08 | Quiz 08 |
Публиковать порты и объяснять роль NAT и iptables/nftables | L4 ★ | 08 | Debugging challenge 3 |
| Использовать встроенный DNS и network aliases | L3 | 08 | Проект 3 |
Диагностировать ошибки с localhost внутри container | L4 ★ | 08 | Debugging challenges 4, 6 |
| Выбрать network mode: bridge, host, none | L3 | 08 | Quiz 08 |
| Изолировать сервисы через отдельные networks | L3 | 08, 09 | Проект 3 |
Домен 9. Compose и рабочий процесс
| Компетенция | Целевой уровень | Формируется в | Проверяется |
|---|---|---|---|
Написать compose.yaml по Compose Specification | L4 ★ | 09, 09 | Проект 3 |
| Настроить зависимость по готовности, а не по запуску | L4 ★ | 09 | Debugging challenge 15 |
| Управлять конфигурацией через env files, secrets, interpolation | L3 | 09 | Проект 3 |
| Использовать несколько Compose-файлов и profiles | L3 | 09 | Проект 3 |
| Разделить development и production images | L4 ★ | 10 | Проект 4 |
| Настроить hot reload без потери воспроизводимости | L3 | 10 | Exercises 10 |
| Отлаживать Python-код внутри container из IDE | L2 | 10 | Exercises 10 |
| Выполнять database migrations в контейнеризованной среде | L3 | 10 | Проект 3 |
Автоматизировать рутину через Makefile и scripts | L2 | 10 | Проект 3 |
Домен 10. Production, security, observability
| Компетенция | Целевой уровень | Формируется в | Проверяется |
|---|---|---|---|
| Превратить development image в production-ready | L4 ★ | 11 | Проект 4 |
Применить runtime hardening: non-root, read-only, --cap-drop | L4 ★ | 11, 12 | Проект 4, Итоговый экзамен |
| Различать liveness и readiness | L3 | 11 | Quiz 11 |
| Задать resource limits и объяснить их влияние на Python | L4 ★ | 11 | Debugging challenge 13 |
| Передать secrets, не оставив их в image layers | L4 ★ | 11, 12 | Debugging challenge 19 |
| Построить модель угроз для контейнеризованного сервиса | L3 | 12 | Итоговый тест |
| Найти опасные настройки в чужой конфигурации | L4 ★ | 12 | Debugging challenge 20 |
| Сканировать images и работать с SBOM | L2 | 11, 16 | Проект 4 |
Читать logs, events, stats, inspect осознанно | L4 ★ | 13, 13 | Debugging challenges |
| Диагностировать OOM, restart loop, failing healthcheck | L4 ★ | 13 | Debugging challenges 13, 14 |
| Освободить диск, занятый Docker, без потери нужных данных | L3 | 13 | Debugging challenges 17, 18 |
Применять nsenter, strace, tcpdump для глубокой диагностики | L2 | 13 | Exercises 13 |
Домен 11. Доставка и границы применимости
| Компетенция | Целевой уровень | Формируется в | Проверяется |
|---|---|---|---|
| Опубликовать image в registry и проверить digest | L3 | 14, 14 | Проект 4 |
| Спроектировать стратегию tagging | L4 ★ | 14 | Проект 4 |
| Запустить integration tests с реальной базой данных | L4 ★ | 15 | Проект 3 |
| Применить Testcontainers for Python | L2 | 15 | Exercises 15 |
| Построить CI pipeline со сборкой, тестами, сканированием и публикацией | L4 ★ | 16 | Проект 4 |
| Настроить build cache в CI | L3 | 16 | Проект 4 |
| Объяснить разделение задач Docker и Kubernetes | L3 | 18 | Итоговый тест |
| Определить момент, когда Compose перестаёт хватать | L3 | 18 | Итоговый тест |
| Аргументированно отказаться от контейнеризации | L4 ★ | 19 | Итоговый тест |
| Распознавать антипаттерны в чужих конфигурациях | L4 ★ | 19, references | Итоговый экзамен |
Лист самооценки
Скопируйте таблицу и заполняйте по мере прохождения. Ставьте уровень честно: завышенная самооценка обнаружится на debugging challenges.
| Домен | До курса | После курса | Целевой |
|---|---|---|---|
| 1. Linux и внутреннее устройство | L__ | L__ | L3–L4 |
| 2. Эксплуатация Docker Engine | L__ | L__ | L3 |
| 3. Images | L__ | L__ | L3–L4 |
| 4. Containers и lifecycle | L__ | L__ | L3–L4 |
| 5. Сборка образов | L__ | L__ | L4 |
| 6. Python в containers | L__ | L__ | L4 |
| 7. Storage | L__ | L__ | L3–L4 |
| 8. Networking | L__ | L__ | L3–L4 |
| 9. Compose и рабочий процесс | L__ | L__ | L3–L4 |
| 10. Production, security, observability | L__ | L__ | L3–L4 |
| 11. Доставка и границы применимости | L__ | L__ | L3 |
Навигация
← Предыдущий материал
Вернуться к главному оглавлению
Следующий материал → Карта курса