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, который содержит необходимую версию и все конфигурационные файлы.
-
Работа с микросервисами. Например, веб-приложение, состоящее из нескольких микросервисов: сервис авторизации, обработки заказов и управления пользователями. Каждый микросервис может быть упакован в свой собственный Docker-контейнер: один с Node.js, другой с Python и так далее.
Преимущества
- Изоляция и безопасность: Docker помогает создавать изолированные среды для разработки и тестирования ПО без влияния на основную систему.
- Ускорение разработки: Docker позволяет быстро создавать и уничтожать контейнеры. Разработчики могут работать над приложением независимо от ОС.
- Масштабируемость и отказоустойчивость: позволяет запускать одно приложение в нескольких контейнерах для повышения производительности. Для масштабирования используются платформы оркестрации: OpenShift, Kubernetes, Docker Swarm, Nomad и т.д.
Недостатки
- Повышенная потребность в вычислительных ресурсах.
- Необходимость оркестрации для крупных приложений.
- Сложности на Windows и macOS, так как изначально разработан для Linux.
Подборка материалов по изучению Docker
Теория по Docker доступна в предыдущем посте тут.
🌐 Официал ьная документация Docker
📎 Статьи
- О Докер с примером на пицце + серия статей
- Кратко про Docker
- Термины и концепции
- Как работает Docker
- Подробнее о компонентах
- Руководство по Docker: с нуля до кластера на AWS — для тех, кто хочет попробовать сам
- Всегда ли нужны Docker, микросервисы и реактивное программирование?
- Руководство по Docker Compose для начинающих
- Про Docker Swarm
⏯ Видео
- Пример. Экосистема контейнеров в Yandex.Cloud
- Зачем нужен и как работает Docker
- Практический курс Docker и Kubernetes
- Коротко о Docker
- Docker образы. Микросервисы — Демо-занятие курса «DevOps практики и инструменты»
- Курс по Docker