План дальнейшего развития
Куда двигаться после курса — с обоснованием порядка.
Порядок не случаен: каждая следующая тема опирается на предыдущие. Изучение Kubernetes до понимания cgroups и namespaces даёт умение применять рецепты, но не умение разбираться, когда рецепт не сработал.
Правило выбора
Не «что модно», а что уже мешает в вашей работе. Тема, изучаемая без задачи, забывается за месяц; тема, изучаемая ради задачи, остаётся.
Отсюда порядок ниже — рекомендательный. Если у вас уже болит третий пункт, начинайте с него.
Уровень 1. Углубление того, что курс задел
1.1. Linux: namespaces, cgroups, capabilities
Зачем. Всё, что делает Docker, делает ядро. Понимание механизмов превращает «работает» в «понятно почему» и особенно окупается при отладке.
| Что изучать | Как проверить понимание |
|---|---|
Восемь видов namespace, clone, unshare, setns | Собрать изолированное окружение вручную |
cgroups v2: контроллеры, иерархия, memory.high | Объяснить, почему Docker не задаёт memory.high |
capabilities: полный список, CAP_SYS_ADMIN | Найти минимальный набор для своего приложения |
| seccomp: профили, BPF | Прочитать профиль Docker по умолчанию |
Источники: man 7 namespaces, man 7 capabilities, документация ядра по cgroup v2.
Опора в курсе: раздел 17.
1.2. OverlayFS и драйверы хранения
Зачем. Copy-up объясняет размер образов, скорость записи и то, почему удалённый файл остаётся в слое.
Что изучать: устройство lowerdir/upperdir/workdir, whiteout-записи, различия драйверов, fuse-overlayfs в rootless-режиме.
Опора: урок 17.5.
1.3. Сеть Linux
Зачем. Диагностика сети container'ов без понимания veth, мостов и nftables сводится к перебору.
| Что | Зачем |
|---|---|
veth, мосты, маршрутизация | Понять путь пакета |
nftables/iptables, трансляция адресов | Понять публикацию порта |
nsenter, ip netns | Отлаживать без утилит в образе |
| Разрешение имён в container'е | Понять /etc/resolv.conf |
Опора: раздел 08.
Уровень 2. Альтернативные инструменты
Не «замена Docker», а способ увидеть, что в Docker существенно, а что случайно.
2.1. containerd и ctr/nerdctl
Зачем. containerd — то, что на самом деле запускает container'ы, в том числе в Kubernetes. Работа с ним напрямую показывает, где заканчивается Docker и начинается стандарт.
2.2. Podman и Buildah
Зачем. Podman работает без демона и по умолчанию в rootless-режиме. Это другая модель безопасности: нет процесса от root, которому все доверяют.
| Различие | Последствие |
|---|---|
| Нет демона | Нет сокета, дающего права root |
| Rootless по умолчанию | User namespace включён |
| Pod'ы как в Kubernetes | Ближе к оркестратору |
Совместимость с docker CLI | Переход почти механический |
Buildah отделяет сборку от запуска — образ можно собрать без работающего демона и без привилегий.
2.3. Rootless Docker
Зачем. Тот же Docker без процесса от root. Компромисс между привычностью и моделью безопасности Podman.
Цена: часть возможностей недоступна, сеть медленнее, монтирование ограничено.
Опора: урок 12.3.
Уровень 3. Оркестрация
Изучать после того, как ответили на вопрос «нужна ли она» (урок 18.4). Kubernetes, изученный «на всякий случай», забывается быстрее, чем появляется задача.
3.1. Kubernetes: основы
| Порядок | Тема |
|---|---|
| 1 | Pod, Deployment, Service, ConfigMap, Secret |
| 2 | Пробы: startup, liveness, readiness |
| 3 | requests, limits, классы качества обслуживания |
| 4 | StatefulSet, PVC, StorageClass |
| 5 | Ingress и контроллеры |
| 6 | NetworkPolicy |
| 7 | RBAC |
Опора: раздел 18.
3.2. Helm или Kustomize
Зачем. Манифесты для нескольких сред без копирования.
| Helm | Kustomize | |
|---|---|---|
| Модель | Шаблоны | Наложение изменений |
| Сложность | Выше | Ниже |
| Распространение чужих приложений | Да | Нет |
Входит в kubectl | Нет | Да |
Совет: начинать с Kustomize. Helm нужен, когда вы распространяете приложение другим.
3.3. Локальный кластер
kind или minikube — для обучения и тестов. kind быстрее и ближе к настоящему кластеру, потому что узлы — это container'ы.
3.4. Nomad
Зачем. Оркестрация с существенно меньшей сложностью. Полезно изучить хотя бы обзорно: это показывает, какая часть сложности Kubernetes необходима, а какая — следствие его универсальности.
Уровень 4. Эксплуатация
4.1. Наблюдаемость
| Что | Зачем |
|---|---|
| Prometheus и формат метрик | Метрики, а не только логи |
| Grafana | Отображение и оповещения |
| OpenTelemetry | Трассировка запроса через сервисы |
| Loki или ELK | Сбор логов |
Порядок: метрики → оповещения → трассировка. Трассировка без метрик преждевременна.
Опора: раздел 13.
4.2. Безопасность цепочки поставок
| Что | Зачем |
|---|---|
| SLSA | Уровни гарантий сборки |
Sigstore и cosign | Подпись без своей инфраструктуры ключей |
| SBOM: SPDX, CycloneDX | Состав образа |
| Trivy, Grype | Сканирование |
| Admission-контроль | Не пускать неподписанное в кластер |
Опора: урок 12.7.
4.3. Изоляция для недоверенного кода
| Средство | Модель |
|---|---|
| gVisor | Ядро в пространстве пользователя |
| Kata Containers | Лёгкая ВМ на container |
| Firecracker | Микро-ВМ |
Изучать, когда появилась задача выполнять чужой код. Без неё это чтение ради чтения.
Опора: урок 19.2.
Уровень 5. Смежное
5.1. Управление конфигурацией
Ansible или аналог. Зачем: container'ы работают на машинах, и машины кто-то настраивает. Курс это не покрывает вовсе.
5.2. Инфраструктура как код
Terraform, OpenTofu, Pulumi. Зачем: кластер, registry, сеть, база — тоже описываются кодом.
5.3. Модели развёртывания
Blue-green, canary, feature flags. Зачем: выкатка без простоя — вопрос не Docker, а процесса.
5.4. Базы данных в эксплуатации
Резервное копирование, восстановление на момент времени, репликация, миграции без простоя. Зачем: курс показал, что Docker этим не занимается (урок 19.1). Занимается кто-то другой, и часто это вы.
Что не стоит изучать сразу
Полезно назвать прямо: три темы, за которые берутся раньше времени.
| Тема | Почему рано |
|---|---|
| Service mesh | Решает задачи, возникающие после десятков сервисов |
| GitOps | Требует уже работающего кластера и налаженной доставки |
| Свой Kubernetes «с нуля» | Обучающее упражнение, а не рабочая задача |
Каждая из трёх осмысленна — при наличии задачи. Без неё это способ потратить месяц.
Порядок в одном списке
Если нужен один линейный маршрут:
1. Linux: namespaces, cgroups, capabilities ← окупается сразу
2. Сеть Linux ← окупается при первой отладке
3. Метрики и оповещения ← окупается при первом отказе
4. Podman или rootless Docker ← меняет взгляд на безопасность
5. Kubernetes, если ответ на «нужен ли» — да
6. Kustomize
7. Безопасность цепочки поставок
8. Управление конфигурацией и инфраструктура как код
Первые три пункта окупаются независимо от того, появится ли у вас кластер. Начинать стоит с них.
Как учиться
Три правила, вытекающие из устройства этого курса.
Проверять командой, а не чтением. Утверждение, не проверенное на своей машине, остаётся чужим мнением. Курс построен так, что почти каждое утверждение можно проверить, — и это не украшение, а способ помнить.
Проверять проверку. Инструмент, который никогда не находит проблем, неотличим от сломанного. Прежде чем верить зелёному результату, убедитесь, что он бывает красным.
Называть, чего не сделали. Раздел «чего решение не делает» полезнее списка достижений: он показывает границы того, что вы знаете, — и именно там находится следующая тема для изучения.
Навигация
Вернуться к справочникам
Карта решений
Официальные источники
Раздел 19. Ограничения Docker
Главное оглавление