Generated with Avocode. Generated with Avocode. Generated with Avocode. Group 15 close hat Generated with Avocode. Generated with Avocode. Generated with Avocode. Generated with Avocode. Generated with Avocode. Generated with Avocode. path40

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

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

Что такое 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

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

Клиент

Сервер (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. В его использовании множество нюансов, которые открываются уже при самостоятельном взаимодействии с программным обеспечением. Чтобы разобраться глубже, рекомендуем курс
«PHP-разработчик», где вы узнаете о работе серверов, баз данных и backend-разработке более подробно.

Курс «PHP-разработчик»
Обширная программа для изучения PHP, состоящая из 4 курсов. Поможет с нуля овладеть популярным языком программирования, устроиться в IT-компанию вашей мечты или стать независимым разработчиком.
  • Живая обратная связь с преподавателями
  • Неограниченный доступ к материалам курса
  • Стажировка в компаниях-партнёрах
  • Дипломный проект от реального заказчика
  • Гарантия трудоустройства в компании-партнёры для выпускников, защитивших дипломные работы
Хочешь получать крутые статьи по программированию?
Подпишись на рассылку Skillbox