🐳 Docker: Краткое описание и подборка материалов
Docker — это платформа для разработки, доставки и запуска приложений в контейнерах. Помогает развернуть множество контейнеров на одной хост-машине независимо от ее операционной системы.
Основные понятия
💩Контейнер — изолированная среда, в которой запускаются приложения вместе со всеми зависимостями, включая библиотеки и компоненты, необходимые для работы приложения.
💩Image (образ) — шаблон для создания контейнера, описывающий, что именно должно быть в контейнере. Образы можно создавать самостоятельно или загружать из репозиториев, таких как Docker Hub.
💩Dockerfile — текстовый файл с инструкцией для создания образа (что должно находиться в образе, какие команды, зависимости и процессы он будет содержать)
💩Registry (реестр/репозиторий) —удалённое (открытое / закрытое) хранилище образов. Docker Hub – публичное хранилище образов.
💩Host — ОС, на которой работает Docker.
💩Platform — программа, которая упаковывает и запускает приложения в контейнере. Собирает код и зависимости
💩Volumes — хранилище данных для приложения.
💩Docker Compose — инструмент для определения и запуска многоконтейнерных приложений с помощью YAML-файла. Docker Compose позволяет настроить параметры, такие как имя сервиса, образ, порты, тома, сети и зависимости между сервисами.
💩Docker Swarm — режим работы Docker, в котором несколько хостов объединяются в кластер для управления и масштабирования контейнеров. Docker Swarm обеспечивает высокую доступность, балансировку нагрузки и обнаружение сервисов.
Архитектура Docker
Docker построен на клиент-серверной архитектуре. Docker-Client общается с Docker-Daemon, который создает, запускает, распределяет контейнеры. Клиент и сервер могут работать как на одной машине, так и удаленно. Интерфейс общения: Socket или REST API.
✏️ Примеры использования
➖Работа с веб-приложением. К примеру, веб-приложение на PHP и нужно его запустить на своем компьютере. Вместо того, чтобы устанавливать PHP, веб-сервер и др. зависимости напрямую, можно использовать Docker для создания контейнера, в который упаковывается всё необходимое для работы веб-приложения.
Далее этот контейнер запускается на вашем компьютере и веб-приложение работает в изолированной среде, не требуя установки всех компонентов на операционной системе.
➖Контейнеризация БД. Например, компания использует БД MongoDB для хранения данных. Чтобы облегчить управление и развертывание, администратор использует Docker для создания контейнера с MongoDB. Этот контейнер содержит необходимую версию MongoDB и все конфигурационные файлы. Это позволяет легко масштабировать, резервировать и обновлять базу данных с минимальными усилиями, а также обеспечивает изоляцию от других приложений и сервисов.
➖Работа с микросервисами. Например, есть веб-приложение, состоящее из нескольких микросервисов: сервис авторизации, обработки заказов и управления пользователями.
Каждый микросервис может быть упакован в свой собственный Docker-контейнер:
один с Node.js для авторизации, другой с Python для обработки заказов и так далее.
Это облегчает масштабирование и управление каждым сервисом независимо.
✅ Преимущества
▫️Изоляция и безопасность: Docker помогает создавать изолированные среды для разработки и тестирования ПО без влияния на основную систему. Например, перенести приложение со всеми зависимостями на другую систему с помощью пары команд в терминале.
▫️Ускорение разработки: Docker позволяет быстро создавать и уничтожать контейнеры. Разработчики могут работать над приложением независимо от ОС
▫️Масштабируемость и отказоустойчивость: позволяет запускать одно приложение в нескольких контейнерах для повышения производительности. Для масштабирования используются платформы оркестрации: OpenShift, Kubernetes, Docker Swarm, Nomad, и тд
⛔️ Недостатки
◾️Повышенная потребность в вычислительных ресурсах
◾️Необходимость оркестрации для крупных приложений
◾️Сложности на Windows и macOS (так как изначально разработан для Linux)
Подборка материалов в следующем посте 👇
#инструменты
Post #250
8.07K