Код
#Руководства

Docker: обзор экосистемы

Рассказываем о том, что такое Docker и как он помогает современному разработчику.

 vlada_maestro / shutterstock

Что такое PaaS-решения

Без облачных сервисов сегодня трудно представить не только разработку программного обеспечения и веб-приложений, но и нашу обычную жизнь. Разницу между SaaS, Iaas и Paas наглядно демонстрирует прием Pizza as a Service с помощью такой диаграммы:

Источник

PaaS (Platform as a Service) — это виртуальная облачная платформа, средствами которой вы можете обеспечить полный цикл создания и поддержки веб-приложения: разработку, развертывание, тестирование и обслуживание. Все это будет реализовано удобным и быстрым способом.

Вам не нужно приобретать лицензии на программное обеспечение, управлять средствами разработки и сложной инфраструктурой — вы занимаетесь только своими приложениями, а все остальное делает платформа.

Здесь мы обзорно рассмотрим одно из самых популярных подобных решений для разработчиков — Docker.

Суть и возможности Docker

Принцип работы Docker метафорически можно описать как погрузку контейнеров на корабль в порту. До шестидесятых годов прошлого века доставка грузов была сложным процессом: перевозчику приходилось учитывать их различные типы — например, чтобы не повредить хрупкий и мягкий товар. Разгрузка занимала множество времени.

Эту проблему решил контейнер: любые грузы внутри него — будь то бананы или запчасти для авто — можно удобно расположить и перемещать с помощью автоматического крана. Необходимость выгружать при этом содержимое из контейнера исчезла — он не открывается до окончания поездки, и товары не могут случайно смешаться или испортиться из-за движения.

Грузовые контейнеры в морском порту. Источник

Так и Docker позволяет операционной системе запускать программы изолированно друг от друга — каждую в собственном окружении. Основа его работы — функции linux namespaces, благодаря которым можно виртуализировать и изолировать ресурсы системы. Сегодня уже существуют версии Docker для Windows и macOS. Несмотря на то что лежащие в основе Docker технологии придумали давно, именно он стал идеальной реализацией для решения сложных задач разработки.

Docker — программное обеспечение с открытым исходным кодом на базе Linux, но есть два варианта: бесплатное решение для свободного пользования и платное для корпоративного сегмента.

Компоненты Docker

Рассмотрим, из чего состоит экосистема этого ПО:

Клиент

Непосредственно сама программа Docker, которая получает команды от разработчика-пользователя и отдает их демону.

Сервер (daemon)

Данные передаются от клиента к нему, и тот выполняет всю работу.

Контейнеры (docker containers)

Внутри них вы запускаете свои приложения. По сути, контейнер — не что иное,
как процесс вашей ОС, но запущенный в изолированном окружении, а не на компьютере.

Образы (docker images)

Вы запускаете контейнеры из образов — готовых шаблонов, которые можно скачать или создать самостоятельно.

Реестры

В них система держит созданные вами образы. Они бывают публичными и частными. Официальный реестр называется DockerHub, в нем более 10 тысяч образов.

Способы применения Docker

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

В целом он используется разработчиками веб-приложений по всему миру
для решения следующих задач:

  • автоматизация и упрощение развертывания проектов;
  • масштабирование баз данных, сервисов backend и веб-приложений;
  • построение своих легковесных и переносимых PaaS-окружений;
  • обеспечение возможности беспроблемно работать над проектом большой команде разработчиков.

Kubernetes

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

Компоненты Kubernetes, автор Julia Evans

Преимущества и недостатки

Трудно представить, но раньше подавляющее большинство проектов в интернете развертывались на один большой неповоротливый проприетарный сервер. Управлять им было неудобно, сложно и болезненно, даже несмотря на наличие специальных программ.

Docker полностью изменил подход к этому: теперь программы запускаются в отдельных контейнерах. Обновления версий одной программы не могут повлиять на другие обновления и всю систему в целом. Число ошибок и сбоев из-за этих факторов при использовании Docker стремится к нулю.

Плюсы Docker

  1. Абстрагирование приложения. Приложение в контейнере не зависит от архитектуры или ресурсов хоста.
  2. Быстрота и простота масштабирования. Если приложение грамотно спроектировано, то масштабирование становится очень прямолинейным и легким для разработчиков процессом.
  3. Простота контроля версий и управления зависимостями. Вы можете соединить свое приложение со всеми зависимостями и работать с ним как с одним целым. Зависимости содержатся в одном контейнере, и хост-системы больше не отвечают за управление ими.
  4. Изолированная среда. Уровень изолированности не сравнится с виртуализацией, однако благодаря легкой среде выполнения можно мгновенно запускать приложения в любом количестве контейнеров.

У инструмента есть недостатки, перечислим их:

  • дополнительная нагрузка на производительность;
  • усложнение инфраструктуры;
  • необходимость качественной и тонкой настройки;
  • большие временные ресурсы на процесс удаления контейнеров;
  • ограничение обратной совместимости в некоторых случаях.

Однако плюсы применения Docker в проектах с лихвой перекрывают все это.

Заключение

Это лишь основы, которые необходимо знать о Docker. В его использовании множество нюансов, которые открываются уже при самостоятельном взаимодействии с программным обеспечением.

Изучайте IT на практике — бесплатно

Курсы за 2990 0 р.

Я не знаю, с чего начать
Освойте топовые нейросети за три дня. Бесплатно
Знакомимся с ChatGPT-4, DALLE-3, Midjourney, Stable Diffusion, Gen-2 и нейросетями для создания музыки. Практика в реальном времени. Подробности — по клику.
Узнать больше
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована