Может показаться, чторазработка приложения – это написание надёжного кода и всё. Настоящаяпроблема заключается в работе с несколькими языками программирования на разных платформах иуправлении интерфейсами между инструментами. Здесь на помощь приходит Docker.
Инструмент контролирует приложения и во время разработки, и в рантайме, помогает управлять хранилищем, памятью и правами приложений, обеспечивает согласованную среду на любомсовместимом хосте (*nix или Windows).
Table of Contents
Особенности Docker
- Простая и быстрая настройка.
- Высокая производительность.
- Изоляция – Docker использует для запуска приложений контейнеры.
- Качественное управление безопасностью.

Kubernetes – инструментуправления контейнерами, автоматизирующий развёртывание. Это платформа с открытым исходным кодом, разработанная компанией Google, а теперь управляемая Cloud Native. Kubernetes помогает в обновлении приложений простым и быстрым способом, управляет рабочей нагрузкой и планированием контейнеров в кластере, автоматизирует многие ручные процессы, например, управлением приложенияй в контейнере и их масштабированием.
Особенности Kubernetes
- Автоматизация ручных процессов.
- Балансировка нагрузки. Kubernetes распределяет сетевой трафик и поддерживает стабильность развёртывания.
- Самовосстановление. Инструмент перезапускает отказавшие контейнеры, перемещает, а также «убивает» контейнер, не отвечающий шаблону пользователя.
- Инструментирование хранилища: пользователи могут автоматически монтировать систему хранения на свой вкус.
Docker и Kubernetes – это разные технологии. Не совсем справедливо сравнивать два этих варианта или ставить вопрос о том, кому из них следует отдать приоритет.
Docker – это контейнернаяплощадка, а Kubernetesявляется инструментом оркестровки контейнеров для таких платформ, как Docker.

Docker и Kubernetes часто работают вместе. Docker используется для изоляции приложений в контейнерах, а Kubernetes как планировщик для развёртывания и масштабирования.
Сходства Docker и Kubernetes:
- Архитектура, основанная на микросервисах.
- В основном написаны на Go, так что поставляться в виде лёгких бинарников.
- Оба используют файлы в человекочитаемом формате YAML.
Если в вашей работе используетсямикросервисная архитектура – берите Docker и назначайте контейнер для каждогомикросервиса.
Kubernetes – это быстро развивающаяся технология, но она нужна только если у вас крупный штат разработчиков,которым нужна серьезная продакшн-среда. Для маленького проекта и трёх-четырёх разработчиков накладные расходы могут «съесть» всю пользу.

Когда и чтоиспользовать?
Docker:
- если приложение подходит для работы в контейнере;
- приложение не требует графического интерфейса;
- приложение должно быть развернуто последовательно.
Kubernetes:
Если организация непривязана к одному облачному провайдеру, то использование Kube является самымразумным. Причина в том, что он работает одинаково на всех системах. Вот почемуего называют вендор-независимым.

Совершенно ясно, чтообе технологии идут рука об руку и запускаются друг за другом. Но чтозаставляет думать, что существует конкуренция между ними? DockerSwarm.Это один из инструментов оркестровки контейнеров, предоставляемый ребятами из DockerInc.
Это внутреннийинструмент оркестровки контейнеров, разработанный для «общения» с контейнерами,работающими в среде Docker. Он используется для кластеризации и планирования,позволяет управлять несколькими контейнерами, развёрнутыми на несколькиххост-машинах. В работе используется стандартный Docker API.
Принципы работы
- обратная совместимость;
- безопасность по умолчанию;
- устойчивая и отказоустойчивая архитектура;
- простой, но динамичный пользовательский интерфейс.
Развёртывание
Kubernetes:приложения могут быть развёрнуты с использованием сочетания модулей и сервисов/микросервисов.
Docker Swarm: приложениямогут быть развёрнуты как сервисы/микросервисы в Swarm-кластере или при помощи DockerCompose. Для обозначения универсальных контейнеров используется файл YAML.
Установка
Kubernetes: здесь установка полностью ручная. Это требует тщательного планирования, чтобы поднять Kubeи заставить работать. Процесс установки может отличаться для разных ОС и зависитот поставщика услуг.
Docker Swarm: установка в сравнении с Kubernetes отличается скоростью и простотой. Понадобится лишь один набор инструментов, чтобы научиться строить на его основесреды и конфигурации.
Функционирование
Kubernetes: дляперемещения внутри структуры и запуска Kubernetes понадобятся знания ипредставление о Docker CLI. Для запуска и настройки нужнообщее понимание инфраструктуры.
Docker Swarm:как уже говорилось ранее, Docker Swarm – разработка Docker, поэтому для навигации внутри структурыиспользуется один язык. Это повышает скорость работы и обеспечивает вариативность. Таким образом, Docker получаетзначительное преимущество в удобстве использования.
Журналирование
Kubernetes: дляразвернутой в кластере службы, например Elasticsearch/Kibana, Kubernetesподдерживает несколько версий мониторинга и ведения журнала.
Docker Swarm: здесьподдерживается только мониторинг с помощью сторонних приложений. Для данныхцелей обычно рекомендуется Riemann.
Масштабирование
Kubernetes: дляраспределённых систем Kube– самое то. Этот сложный all-in-oneфреймворк предоставляет надежные гарантии относительно состояния кластера иунифицированного набора API.
Docker Swarm: вотличие от Kubernetes, скорость развёртывания контейнеров намного выше. Масштабирование по требованию позволяет добиться быстрого времениреакции.
Сеть
Kubernetes: сетьв Kube – плоская. Все контейнеры могут общаться друг с другом. ВKubernetes необходимы два CIDR – один для получения IP-адреса, а другой – для внутреннихсервисов.
Docker Swarm поддерживает возможность самостоятельно шифровать пользовательский трафик в контейнерево время оверлея.
В эру облачных сервисов,опенсорсного ПО, сервисов/микросервисов и контейнеризации компаниям удастсяпривлечь талантливых DevOps-специалистовдля развития инфраструктуры. Контейнеры помогут сосредоточиться набизнес-логике, не отвлекаясь на то, что находится под капотом.
Если вы только начинаете знакомство с контейрными технологиями и вас интересует Docker, обратите внимание на другие наши материалы:
- Что такое Docker, и как его использовать?
- 12 друзей Docker-а – опенсорсные инструменты в помощь разработке
- Как запустить веб-приложение на Nginx в Docker
Больше полезной информации вы найдете на наших телеграм-каналах «Библиотека программиста» и «Книги для программистов».