Главная/О курсе/Урок

Карта компетенций

О чём этот файл

Карта компетенций связывает каждый навык с разделом, где он формируется, и с проверкой, которая подтверждает его освоение. Используйте её двумя способами:

  • до курса — чтобы понять, что именно вы получите;
  • после каждого раздела — чтобы честно отметить достигнутый уровень.

Шкала уровней

УровеньНазваниеЧто это означает на практике
L0НезнакомТермин не встречался или не имеет смысла
L1УзнаётПонимает термин в чужом тексте, может объяснить своими словами, но не применяет
L2Применяет по образцуВыполняет задачу, имея пример или документацию перед глазами
L3Применяет самостоятельноРешает типовую задачу без образца, объясняет свои решения
L4Проектирует и диагностируетВыбирает подход из нескольких, обосновывает trade-offs, чинит чужие ошибки, знает границы применимости

Целевой уровень курса — L3 по всем базовым компетенциям и L4 по ключевым (отмечены звёздочкой в таблицах ниже). L4 по всем компетенциям сразу не достигается учебным курсом — он требует эксплуатационного опыта.


Домен 1. Linux и внутреннее устройство containers

КомпетенцияЦелевой уровеньФормируется вПроверяется
Объяснить container как изолированный Linux processL4 ★02Quiz 02, Checkpoint 1
Отличить container от virtual machine и назвать цену каждого подходаL302, 19Quiz 02, Итоговый тест
Перечислить типы namespaces и показать их для запущенного containerL302, 17Exercises 02, 17
Прочитать cgroup limits container и связать их с docker run флагамиL302, 17Exercises 17
Объяснить роль Linux capabilities и что Docker отбирает по умолчаниюL302, 12Quiz 12
Описать цепочку Docker CLI → daemon → containerd → shim → runcL302, 17Итоговый тест
Найти файловую систему container на host и объяснить работу OverlayFSL303, 17Exercises 17
Обратиться к Docker Engine API через Unix socketL217Exercises 17

Домен 2. Эксплуатация Docker Engine

КомпетенцияЦелевой уровеньФормируется вПроверяется
Установить Docker Engine из официального репозитория и проверить установкуL301Exercises 01
Управлять daemon через systemctl, читать его логиL301, 13Exercises 01
Объяснить риски группы docker и настроить rootless modeL4 ★01, 01, 12Quiz 12, Итоговый тест
Настроить daemon.json (logging driver, storage, registry)L201, 13Exercises 13
Полностью удалить Docker и очистить данныеL201Exercises 01

Домен 3. Images

КомпетенцияЦелевой уровеньФормируется вПроверяется
Объяснить строение image: layers, manifest, config, content-addressable storageL4 ★03Quiz 03, Итоговый тест
Объяснить copy-on-write и writable container layerL303Quiz 03
Осознанно выбирать между tag и digest, понимать неизменность digestL4 ★03, 14Quiz 14, Checkpoint 4
Анализировать размер image через docker history и image inspectL303Exercises 03
Переносить image между машинами через save/load и объяснить отличие от export/importL303Exercises 03
Управлять локальным кэшем images и удалять dangling images безопасноL303, 13Exercises 13

Домен 4. Containers и lifecycle

КомпетенцияЦелевой уровеньФормируется вПроверяется
Управлять полным lifecycle: create, start, stop, kill, rmL304Exercises 04
Осознанно выбирать foreground/detached, interactive/TTYL304Exercises 04
Читать exit codes и связывать их с причиной завершенияL4 ★04, 13Debugging challenges
Обеспечить graceful shutdown приложения по SIGTERML4 ★04, 06Проект 2, Итоговый экзамен
Объяснить проблему PID 1 и применить --init там, где нужноL304Quiz 04
Выбрать restart policy под задачуL304Exercises 04

Домен 5. Сборка образов

КомпетенцияЦелевой уровеньФормируется вПроверяется
Объяснить build context и сократить его через .dockerignoreL4 ★05Проект 1
Применять все базовые инструкции Dockerfile по назначениюL305, 05Exercises 05
Объяснить разницу CMD и ENTRYPOINT, exec form и shell formL4 ★05Quiz 05, Debugging challenge 11
Управлять build cache: диагностировать и чинить его инвалидациюL4 ★05Debugging challenge 9, Проект 4
Применять BuildKit: cache mounts, secret mounts, bind mounts, heredocsL305Exercises 05
Писать multi-stage builds и выбирать target stageL4 ★05Проект 2
Настроить HEALTHCHECK и объяснить, когда он не нуженL305, 11Проект 3
Обеспечить воспроизводимость сборки: pinning, digests, lock filesL305Проект 4

Домен 6. Python в containers

КомпетенцияЦелевой уровеньФормируется вПроверяется
Выбрать base image и обосновать выбор slim против AlpineL4 ★06Quiz 06, Итоговый тест
Объяснить влияние glibc/musl на Python wheelsL306Quiz 06
Зафиксировать зависимости и объяснить trade-offs pip/Poetry/uvL4 ★06Проект 2
Написать Python Dockerfile с корректным порядком слоёвL4 ★06Проект 1, Проект 2
Объяснить, когда venv внутри container нужен, а когда нетL306Quiz 06
Настроить PYTHONUNBUFFERED, PYTHONDONTWRITEBYTECODE и понимать их эффектL306Debugging challenge 2
Настроить structured logging в stdout/stderrL306, 11Проект 2
Запустить приложение от non-root user и решить проблемы правL4 ★06, 07Проект 2, Debugging challenge 7
Контейнеризировать CLI-приложение с корректными exit codesL306Проект 1
Контейнеризировать Flask и FastAPI, не используя development server в productionL4 ★06, 06Проект 2
Рассчитать worker count для Gunicorn/Uvicorn с учётом CPU limitsL306, 11Проект 4
Контейнеризировать background workerL306Проект 3
Запускать pytest внутри containerL306, 15Проект 3
Понимать поведение памяти Python под cgroup limitsL306Debugging challenge 13

Домен 7. Storage

КомпетенцияЦелевой уровеньФормируется вПроверяется
Объяснить эфемерность writable layerL307Quiz 07
Выбрать между named volume, anonymous volume, bind mount и tmpfsL4 ★07, 07, 07Проект 3
Решить проблему UID/GID без chmod 777L4 ★07Debugging challenge 7
Объяснить, почему bind mount скрывает файлы imageL307Debugging challenge 8
Сделать backup и restore volumeL307Exercises 07
Запустить container с read-only root filesystemL307, 11Проект 4

Домен 8. Networking

КомпетенцияЦелевой уровеньФормируется вПроверяется
Объяснить network namespace, veth pair и bridgeL308Quiz 08
Отличать default bridge от user-defined bridge и знать, зачем второйL4 ★08Quiz 08
Публиковать порты и объяснять роль NAT и iptables/nftablesL4 ★08Debugging challenge 3
Использовать встроенный DNS и network aliasesL308Проект 3
Диагностировать ошибки с localhost внутри containerL4 ★08Debugging challenges 4, 6
Выбрать network mode: bridge, host, noneL308Quiz 08
Изолировать сервисы через отдельные networksL308, 09Проект 3

Домен 9. Compose и рабочий процесс

КомпетенцияЦелевой уровеньФормируется вПроверяется
Написать compose.yaml по Compose SpecificationL4 ★09, 09Проект 3
Настроить зависимость по готовности, а не по запускуL4 ★09Debugging challenge 15
Управлять конфигурацией через env files, secrets, interpolationL309Проект 3
Использовать несколько Compose-файлов и profilesL309Проект 3
Разделить development и production imagesL4 ★10Проект 4
Настроить hot reload без потери воспроизводимостиL310Exercises 10
Отлаживать Python-код внутри container из IDEL210Exercises 10
Выполнять database migrations в контейнеризованной средеL310Проект 3
Автоматизировать рутину через Makefile и scriptsL210Проект 3

Домен 10. Production, security, observability

КомпетенцияЦелевой уровеньФормируется вПроверяется
Превратить development image в production-readyL4 ★11Проект 4
Применить runtime hardening: non-root, read-only, --cap-dropL4 ★11, 12Проект 4, Итоговый экзамен
Различать liveness и readinessL311Quiz 11
Задать resource limits и объяснить их влияние на PythonL4 ★11Debugging challenge 13
Передать secrets, не оставив их в image layersL4 ★11, 12Debugging challenge 19
Построить модель угроз для контейнеризованного сервисаL312Итоговый тест
Найти опасные настройки в чужой конфигурацииL4 ★12Debugging challenge 20
Сканировать images и работать с SBOML211, 16Проект 4
Читать logs, events, stats, inspect осознанноL4 ★13, 13Debugging challenges
Диагностировать OOM, restart loop, failing healthcheckL4 ★13Debugging challenges 13, 14
Освободить диск, занятый Docker, без потери нужных данныхL313Debugging challenges 17, 18
Применять nsenter, strace, tcpdump для глубокой диагностикиL213Exercises 13

Домен 11. Доставка и границы применимости

КомпетенцияЦелевой уровеньФормируется вПроверяется
Опубликовать image в registry и проверить digestL314, 14Проект 4
Спроектировать стратегию taggingL4 ★14Проект 4
Запустить integration tests с реальной базой данныхL4 ★15Проект 3
Применить Testcontainers for PythonL215Exercises 15
Построить CI pipeline со сборкой, тестами, сканированием и публикациейL4 ★16Проект 4
Настроить build cache в CIL316Проект 4
Объяснить разделение задач Docker и KubernetesL318Итоговый тест
Определить момент, когда Compose перестаёт хвататьL318Итоговый тест
Аргументированно отказаться от контейнеризацииL4 ★19Итоговый тест
Распознавать антипаттерны в чужих конфигурацияхL4 ★19, referencesИтоговый экзамен

Лист самооценки

Скопируйте таблицу и заполняйте по мере прохождения. Ставьте уровень честно: завышенная самооценка обнаружится на debugging challenges.

ДоменДо курсаПосле курсаЦелевой
1. Linux и внутреннее устройствоL__L__L3–L4
2. Эксплуатация Docker EngineL__L__L3
3. ImagesL__L__L3–L4
4. Containers и lifecycleL__L__L3–L4
5. Сборка образовL__L__L4
6. Python в containersL__L__L4
7. StorageL__L__L3–L4
8. NetworkingL__L__L3–L4
9. Compose и рабочий процессL__L__L3–L4
10. Production, security, observabilityL__L__L3–L4
11. Доставка и границы применимостиL__L__L3

Навигация

← Предыдущий материал
Вернуться к главному оглавлению
Следующий материал → Карта курса

Markdown на GitHub ↗