Docker
Я хочу…
| Задача | Куда идти |
|---|---|
| Выучить Docker с нуля | 01-first-container → читай по порядку |
| Dockerfile для Next.js | nextjs |
| Dockerfile для Node.js | nodejs |
| Dockerfile для Python | python-fastapi / python-django |
| Dockerfile для Go | go |
| Полный стек (App + DB + Redis + Nginx) | fullstack |
| Понять как работает Docker | architecture |
| Понять сети Docker | networking |
| Настроить CI/CD | github-actions-pipeline |
| Подготовить к production | production-hardening |
| Отладить контейнер | debug-containers |
| Найти команду | cheatsheet |
| Docker Swarm | swarm — концепции, deploy-stack — практика |
Tutorials — путь обучения
Читай по порядку. После прохождения всех уроков — уверенно работаешь с Docker.
| # | Урок | Что освоишь |
|---|---|---|
| 01 | 01-first-container | Запуск, порты, логи, жизненный цикл контейнера |
| 02 | 02-building-images | Dockerfile: от наивного к production-ready (multi-stage) |
| 03 | 03-compose-app | Docker Compose: App + DB + Redis, healthcheck, depends_on |
| 04 | 04-networking-workshop | Сети на практике: bridge, DNS, связь контейнеров |
| 05 | 05-debugging-workshop | Сломанные контейнеры — находим и чиним |
| 06 | 06-swarm-cluster | Кластер Swarm на Vagrant: init, join, deploy |
Explanation — как устроено
Не привязаны к порядку. Каждый файл — самостоятельная тема. Читай когда хочешь разобраться «почему».
| Тема | Описание |
|---|---|
| architecture | Client → Daemon → containerd → runc, OCI, namespaces, cgroups |
| images-and-layers | UnionFS, OverlayFS, Copy-on-Write, base images |
| storage | Volumes vs Bind Mounts vs tmpfs, персистентность данных |
| networking | CNM, bridge/host/overlay, veth, iptables, DNS |
| configuration | ENV vs ARG, secrets, 12-Factor, передача конфигурации |
| compose-model | Декларативный подход, проекты, зависимости, профили |
| registry | OCI Distribution, манифесты, multi-arch, теги vs дайджесты |
| runtime-behavior | Signals, PID 1, exit codes, restart policies, logging |
| security | Capabilities, seccomp, AppArmor, rootless, supply chain |
| ci-cd | Build → Test → Scan → Push, DinD vs DooD, Kaniko |
| swarm | Архитектура кластера, Raft, overlay, service discovery |
How-to — решение задач
Иди сюда когда нужно сделать конкретную вещь.
| Задача | Файл |
|---|---|
| Установить Docker | install |
| Оптимизировать сборку | optimize-builds |
| Отладить контейнер | debug-containers |
| Управлять ресурсами (CPU/RAM) | manage-resources |
| Очистка и обслуживание | cleanup-maintenance |
| Локальная сеть и SSH | local-networking |
| CI/CD через GitHub Actions | github-actions-pipeline |
| Работа с Private Registry | private-registry |
| Production hardening | production-hardening |
Swarm
| Задача | Файл |
|---|---|
| Развернуть стек | deploy-stack |
| Управление секретами | manage-secrets |
| Настройка сетей | configure-networks |
| Размещение сервисов | manage-placement |
| Stateful-приложения (БД) | deploy-stateful |
| Healthchecks | configure-healthchecks |
| Бэкап и восстановление | backup-restore |
| Мониторинг кластера | monitor-cluster |
| Отладка сети | debug-networking |
Recipes — готовые конфиги
Копируй → работает. Каждый рецепт: Dockerfile + compose.yaml + .dockerignore + объяснение.
| Стек | Файл |
|---|---|
| Next.js | nextjs |
| Node.js (Express / Fastify / Nest) | nodejs |
| Python + Django | python-django |
| Python + FastAPI | python-fastapi |
| Go | go |
| Java + Spring Boot | java-spring |
| Nginx (reverse proxy + SSL) | nginx-reverse-proxy |
| PostgreSQL | postgres |
| Redis | redis |
| Fullstack (App + DB + Redis + Nginx) | fullstack |
| Monitoring (Prometheus + Grafana) | monitoring |
Reference — справочник
| Справочник | Описание |
|---|---|
| cheatsheet | Все команды Docker CLI на одной странице |
| dockerfile | Все инструкции Dockerfile + best practices |
| compose-spec | Спецификация compose.yaml |
| security-checklist | Чек-лист перед production-деплоем |
| swarm-cheatsheet | Команды Swarm CLI + best practices |