В статье мы расскажем о том, что такое Docker. Но чтобы вам было легче понять принципы его работы, сначала дадим определение контейнеризации.
Что такое контейнеризация
Контейнеризация — это технология, которая позволяет упаковать приложение со всеми зависимостями в один образ. Такой образ называется контейнером.
Если вы используете ПО для контейнеризации, виртуальная среда будет запускаться напрямую из ядра операционной системы без виртуализации оборудования. Это значит, что платформа контейнеризации работает на основной ОС, без использования гостевых систем.
Docker guide: на чем написан Docker
Контейнеризация лежит в основе Docker и многих других решений. Подробнее о нем мы рассказали ниже.
Что такое Docker
Docker — это платформа контейнеризации с открытым исходным кодом. Она была разработана в 2008 году компанией dotCloud. В 2013 году разработчики открыли исходный код Докера для всех желающих. Docker используется для работы на ОС семейства Linux. Если вы хотите пользоваться платформой в другой системе, необходимо создать виртуальную машину с гостевой системой Линукс и установить Докер поверх нее.
Docker позволяет упаковать приложение в контейнер вместе со всеми зависимостями, а далее — доставить и запустить его на целевой ОС. Контейнеры, которые созданы с помощью Докера, принято называть Докер-контейнерами (Docker containers).
Пакет программного обеспечения — вот что такое контейнер в Docker. В него входит всё необходимое для запуска приложения: библиотеки, программный код, среда выполнения и др. Также контейнеризация в Докере имеет ряд особенностей.
Преимущества Docker:
- надежная изоляция. Контейнеры позволяют изолировать приложения друг от друга и от хостовой операционной системы. Благодаря этому приложения реже конфликтуют между собой;
- портативность. Контейнеры можно создать и запустить на любой системе, не меняя содержимое. Поэтому запустить приложение проще;
- возможность управлять версиями. В Докер-контейнерах можно управлять версиями приложений и всех их зависимостей — это облегчает развертывание и обновление приложений;
- масштабируемость. Докер позволяет добавить мощностей контейнеру, если нагрузка возросла;
- эффективное использование ресурсов. Контейнеры задействуют в работе ресурсы общей операционной системы. Поэтому настройка гостевой ОС системы не потребуется.
Недостатки Docker:
- требовательность к ресурсам. Функционал Docker требует дополнительных ресурсов для быстрой работы. Поэтому, если вы планируете пользоваться этой платформой, необходимо иметь мощное оборудование;
- необходимость пользоваться оркестратором при работе с крупными приложениями. Оркестратор — это программа, которая позволяет централизованно управлять большим количеством микросервисов. Как правило, один микросервис хранится в одном контейнере. В стандартной сборке Docker Compose существует механизм для управления микросервисами, однако он не справится с их большим количеством. В таких случаях помогает оркестратор: чаще всего используются Kubernetes или OpenShift;
- сложности при установке на Windows и macOS. Изначально Docker предназначен для установки на ОС Linux. Для работы на остальных системах необходимо создать виртуальную машину, однако это не всегда удается: например, на некоторых устройствах может возникнуть конфликт с гипервизором VirtualBox при попытке установить Докер на Windows.
Работа с Docker: составляющие платформы
Docker — это общее название платформы, в состав которой входят компоненты для разработки, тестирования и деплоя приложения. Что это за компоненты:
- Docker host — это операционная система сервера, на которую установлен Докер;
- Docker client — интерфейс консоли, через которую можно взаимодействовать с серверной частью Docker. Подробнее об этой составляющей расскажем ниже;
- Docker daemon — служба для управления объектами Докера. Подробнее об этой составляющей ниже;
- Docker image — готовый образ приложения, из которого разворачивается приложение;
- Docker container — развернутое приложение;
- Docker Registry — репозиторий, в котором хранятся образы приложений;
- Dockerfile — инструкция по сборке образа;
- Docker Compose — функционал для управления несколькими контейнерами;
- Docker Desktop — интерфейс для просмотра всех объектов Docker. Бесплатная версия работает на большинстве популярных операционных систем: Windows, macOS и Linux;
- Docker Hub — общедоступный репозиторий, из которого можно скачивать готовые образы и загружать собственные.
Как работает Docker
Докер работает по принципу «клиент-сервер». Что значит «клиент» и «сервер» в этом случае?
Клиент — это интерфейс командной строки, через которую работает пользователь. После того как пользователь ввел команду, клиент передает эту информацию серверу.
Сервер — это фоновый процесс, который управляет контейнерами в Докере. По-другому сервер можно назвать Docker-движком, или демоном. Демон принимает информацию от клиента и выполняет заданную команду.
Зачем нужен Docker
Докер часто используется для разработки новых приложений. Ниже мы приведем примеры использования этой платформы на практике.
Создание приложения с зависимостями
Если при стандартном создании приложения необходимо добавить библиотеку или СУБД, разработчику необходимо установить и настроить ее самостоятельно. Когда возникает потребность в том, чтобы заменить зависимость, требуется удалить прежнюю и настроить новую. При этом все действия выполняются вручную.
В случае с Docker настройка зависимостей происходит по-другому: готовые образы ПО публикуются на Docker Hub (о том, что это такое, мы писали выше). Любой из этих образов можно развернуть в Docker, а после работы с ним — остановить или удалить. После удаления образа в операционной системе не останется следов его использования.
Еще одно преимущество Докера для разработки приложений с зависимостями — это универсальные команды для всех этапов работы. Docker-команды используются для скачивания образов ПО, запуска приложений и многого другого.
Автотестирование приложения
Для запуска автотестов требуются дополнительные зависимости — зачастую это системы управления базами данных, брокеры сообщений и др. Перед тестированием их нужно установить и настроить на сервере вручную. В этом случае есть вероятность ошибки и повреждения данных — это повлечет за собой проблемы в работе сервера.
Однако Docker упрощает эту задачу: он позволяет развернуть необходимые зависимости автоматически в формате контейнера. Даже если тестирование завершится некорректно и повредит данные, они удалятся вместе с контейнером. При этом сервер продолжит работать в обычном режиме.
Публикация готового приложения
Следующий этап после тестирования — публикация приложения. Docker автоматизирует эту процедуру, так как само приложение и все его зависимости находятся в одном контейнере.
Среда для деплоя (запуска) приложения становится универсальной для всех типов приложений, так как работает с идентичными контейнерами.
Подведем итоги: Docker — платформа контейнеризации со своими плюсами и минусами. Поэтому рекомендуем выбирать решение исходя из потребностей и доступных ресурсов для работы.
Помогла ли вам статья?
Спасибо за оценку. Рады помочь 😊