VK Cloud

Docker Kubernetes: как они связаны и что выбрать для своего проекта

5 ноября 2026 г.
Станислав Погоржельский2.png
Станислав Погоржельский
Автор статьи
_blog_head_100.png

Docker и Kubernetes работают в паре, на разных этажах одной контейнерной технологии. Контейнер это изолированно запущенное приложение со своими зависимостями, образ это его упакованный шаблон. Docker даёт среду и инструменты для контейнеров: собирает образы, запускает и перезапускает контейнеры на одной машине, столько, сколько помещается в её память. Kubernetes оркестрирует нагрузки на группе машин: распределяет контейнеры по серверам, пересоздаёт после сбоя, добавляет копии под нагрузку, обновляет без остановки. Путь образа такой: собрали инструментами Docker, положили в реестр, хранилище образов, дальше им распоряжается Kubernetes.

Вопрос «Docker или Kubernetes» на собеседованиях и в поиске встречается постоянно. Сама его постановка выдаёт путаницу. Выбирать между ними приходится редко. Выбирают другое: хватает ли проекту контейнеров на одной машине или пора поднимать оркестратор на группе серверов.

Путаницу подогревают вакансии, где оба слова стоят через запятую. В вакансии Docker и Kubernetes означают два навыка одной профессии, а в проекте две ступени одной системы, которые осваиваются по очереди.

Как они работают вместе

1. Образ собирается. В образ попадает приложение со всеми зависимостями, поэтому он одинаково запускается на ноутбуке разработчика и на сервере, если совпадают архитектура процессора и семейство ОС (Linux-образ работает на Linux-ядре, на ноутбуке с macOS или Windows его запускает виртуальная машина Docker Desktop). Собирает его Docker или другой сборщик, формат образов стандартизирован (OCI), те же образы собирают Buildah, BuildKit, Podman и другие инструменты.

2. Образ уезжает в реестр. В кластер VK Cloud (группу серверов под управлением Kubernetes) ставится аддон Docker Registry, дополнительный компонент кластера (установка), после установки у кластера появляется собственный реестр образов. Вход через docker login, а кластеру через kubectl, консольную утилиту управления кластером, создаётся секрет командой kubectl create secret docker-registry (инструкция). Секрет это объект Kubernetes для паролей и ключей.

3. Kubernetes запускает копии. Объект Deployment задаёт, какой образ и сколько копий держать, образ из реестра на узел (сервер кластера) скачивает среда выполнения контейнеров по команде агента kubelet, а при обновлении версии копии заменяются по очереди (официальная документация).

На схеме ниже конвейер из трёх звеньев: ноутбук разработчика с docker build, реестр образов, кластер Kubernetes с копиями приложения на нескольких узлах.

Что выбрать

  1. Один или несколько сервисов на одной машине, простой на время остановки старого контейнера и запуска нового терпим: достаточно Docker, оркестратор здесь лишний слой.

  2. Сервисы разложены по нескольким машинам, обновления без остановки, нагрузка растёт и снижается: Kubernetes, ради этих задач он и создан.

  3. Kubernetes нужен, а администрировать мастер-узлы, серверы, которые управляют кластером, некому: управляемый кластер VK Cloud в сервисе Managed Containers, где их обслуживает облако (создание кластера в VK Cloud).

Путь проекта по этим двум инструментам

1. Старт с Docker. Один сервер, образ собирается на ноутбуке, контейнер запускается на сервере. Для учебного проекта, прототипа и сервиса на один сервер этого хватает, пока не сработал один из сигналов из третьего пункта.

2. Шаг к Docker Compose. Сервисов стало несколько, и Compose поднимает весь набор одной командой на той же машине. Упавший контейнер Docker перезапустит сам, если задана политика перезапуска. Границы остаются прежними. Машина одна, при её недоступности переносить контейнеры некуда, а обновление идёт с коротким простоем.

3. Сигналы к переезду. Релизы откладываются из страха простоя, недоступность сервера останавливает всё сразу, появился второй сервер с ручной синхронизацией между машинами. Любой из трёх сигналов означает, что проект перерос одну машину.

4. Переезд в Kubernetes. Образы остаются прежними, меняется слой управления: Deployment вместо запуска руками, реестр кластера вместо копирования образов по серверам, обновления поочерёдной заменой копий. Управляемый кластер в VK Cloud снимает с команды ещё и обслуживание мастер-узлов (создание кластера).

Частые вопросы

1. Нужно ли учить Docker до Kubernetes?

Да. Образы и контейнеры лежат в фундаменте, без них манифесты кластера (текстовые описания того, что в нём должно работать) читаются как заклинания.

2. Правда ли Kubernetes отказался от Docker?

Kubernetes перешёл на другие исполняемые среды контейнеров, в кластерах VK Cloud это CRI-O, лёгкая среда запуска контейнеров без Docker, но образы, собранные Docker, запускаются как и раньше: формат образов общий для всей отрасли.

3. Можно ли обойтись без своего реестра?

Публичные образы ставятся напрямую из публичных реестров, например Docker Hub. Собственный код удобнее возить через реестр кластера, он рядом и закрыт от посторонних.

4. Docker Compose и Kubernetes решают одну задачу?

Похожую, в разном масштабе. Compose запускает набор контейнеров на одной машине, Kubernetes разводит такой же набор по группе серверов и следит за ним.

5. Нужен ли Kubernetes для одного сайта?

Для одного сайта на одной машине нет, хватит Docker. Kubernetes окупается, когда появляются вторые и третьи сервисы и цена простоя растёт.

6. Можно ли освоить связку без облака?

Можно, на своём компьютере с учебным кластером вроде minikube или kind. Управляемый кластер в облаке экономит время на настройке и ближе к тому, с чем придётся работать на проекте.

Короче говоря для заметки:

  1. Docker отвечает за образы и контейнеры на одной машине, Kubernetes за оркестрацию нагрузок на группе машин.

  2. Связывает их реестр: Docker кладёт образы туда, Kubernetes оттуда забирает.

  3. Выбор по росту: начали с Docker, переросли одну машину, переехали в управляемый Kubernetes.

Оставьте заявку, чтобы получить консультацию

Наши специалисты свяжутся с вами в ближайшее время и ответят на все вопросы.

section_subscribe_2x_9ab2d878a6_ac1afd4471_aed1c6d636.png

            Узнавайте о выходе новых статей в блоге первыми!

            Будем держать в курсе новостей и облачных трендов

            section-subscribe_2x.png
              section-subscribe_2x.png
              Ссылка скопирована
              Поделиться

              Почитать по теме

              _blog_head_20.png
              10 сентября

              Git rebase vs merge: в чём разница и когда что использовать

              _blog_head_186.png
              6 ноября

              Как развернуть базу данных в Kubernetes: StatefulSet, диски и резервные копии

              40+ готовых сервисов