Оглавление курса
Полное содержание курса со ссылками на каждый раздел и урок. Точка входа с описанием курса — MAIN.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
- Практические задания
После этого раздела — Проект 1. Python CLI
Раздел 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. Диагностика
- Практические задания
После этого раздела — Проект 2. FastAPI service
Раздел 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. Автоматизация
- Практические задания
После этого раздела — Проект 3. Multi-service stack
Раздел 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
- Практические задания
После этого раздела — Проект 4. Production pipeline
Раздел 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 | TASK | SOLUTION | CHECKLIST |
| Проект 2. FastAPI service | TASK | SOLUTION | CHECKLIST |
| Проект 3. Multi-service stack | TASK | SOLUTION | CHECKLIST |
| Проект 4. Production pipeline | TASK | SOLUTION | CHECKLIST |
Проверка знаний
- Quizzes по разделам
- Checkpoints
- Debugging challenges
- Итоговый теоретический тест
- Итоговый практический экзамен
- Grading rubric
Справочники
- Docker CLI cheat sheet
- Dockerfile cheat sheet
- Docker Compose cheat sheet
- Networking cheat sheet
- Storage cheat sheet
- Production checklist
- Security checklist
- Python container checklist
- Debugging checklist
- Cleanup checklist
- Каталог антипаттернов
- Карта решений
- Glossary
- План дальнейшего развития