В первой части перевода серии материалов, посвящённых Docker, мы сделали общий обзор этой системы. В частности, мы говорили о том, почему технологии контейнеризации важны в наше время, о том, что такое контейнеры Docker, и о том, с чем их можно сравнить. Сегодня мы поговорим об экосистеме Docker и рассмотрим важные термины, с которыми вы можете столкнуться на пути изучения и использования Docker. Продолжив аналогию с разными вкусностями, представим, что наши термины — это пончики. Дюжина пончиков.
Термины экосистемы Docker
Я разбил термины, с которыми вы можете столкнуться в ходе работы с
Docker, на две части. Думаю, это облегчит их запоминание. Первый блок
терминов будет относиться к механизмам Docker. Второй — к средствам
масштабирования решений, основанных на контейнерах.
Механизмы Docker
▍Платформа Docker
Docker
Платформа Docker (Docker Platform) — это программа, которая даёт нам возможность упаковывать приложения в контейнеры и запускать их на серверах. Платформа Docker позволяет помещать в контейнеры код и его зависимости. Как результат, системы, основанные на контейнерах, легко масштабировать, так как контейнеры можно переносить и воспроизводить.
▍Движок Docker
Движок Docker (Docker Engine) — это клиент-серверное приложение. Компания Docker разделила движок Docker на два продукта. Docker Community Edition (CE) — это бесплатное ПО, во многом основанное на опенсорсных инструментах.
Вероятно, вы будете пользоваться именно этой версией Docker. Docker Enterprise — это платная версия системы, дающая пользователям дополнительные возможности в области поддержки систем, управления ими и безопасности. Платная версия Docker даёт компании средства, необходимые для её существования.
▍Клиент Docker
Клиент Docker и другие механизмы экосистемы (взято из документации)
Клиент Docker (Docker Client) — это основное средство, которое используют для взаимодействия с Docker. Так, при работе с интерфейсом командной строки Docker (Docker Command Line Interface, CLI), в терминал вводят команды, начинающиеся с ключевого слова docker, обращаясь к клиенту. Затем клиент использует API Docker для отправки команд демону Docker.
▍Демон Docker
Демон Docker (Docker Daemon) — это сервер Docker, который ожидает запросов к API Docker. Демон Docker управляет образами, контейнерами, сетями и томами.
▍Тома Docker
Тома Docker (Docker Volumes) представляют собой наиболее предпочтительный механизм постоянного хранения данных, потребляемых или производимых приложениями.
▍Реестр Docker
Реестр Docker (Docker Registry)
представляет собой удалённую платформу, используемую для хранения
образов Docker. В ходе работы с Docker образы отправляют в реестр и
загружают из него. Подобный реестр может быть организован тем, кто
пользуется Docker. Кроме того, поставщики облачных услуг могут
поддерживать и собственные реестры. Например, это касается AWS и Google Cloud.
▍Хаб Docker
Хаб Docker (Docker Hub) — это самый крупный реестр образов Docker. Кроме того, именно этот реестр используется при работе с Docker по умолчанию. Пользоваться хабом Docker можно бесплатно.
▍Репозиторий Docker
Репозиторием Docker (Docker Repository) называют набор образов Docker, обладающих одинаковыми именами и разными тегами. Теги — это идентификаторы образов.
Обычно в репозиториях хранятся разные версии одних и тех же образов. Например, Python — это имя популярнейшего официального репозитория Docker на хабе Docker. А вот Python:3.7-slim — это версия образа с тегом 3.7-slim в репозитории Python. В реестр можно отправить как целый репозиторий, так и отдельный образ.
Теперь поговорим о терминах экосистемы Docker, имеющих отношение к масштабированию.
Масштабирование решений, основанных на контейнерах
Следующие четыре термина имеют отношение к одновременному использованию нескольких контейнеров.
▍Сеть Docker
Сеть Docker (взято из документации)
Сетевые механизмы Docker (Docker Networking)
позволяют организовывать связь между контейнерами Docker. Соединённые с помощью сети контейнеры могут выполняться на одном и том же хосте или
на разных хостах. Подробности о сетевой подсистеме Docker можно почитать
здесь.
▍Docker Compose
Docker Compose — это инструмент, который упрощает развёртывание приложений, для работы которых требуется несколько контейнеров Docker. Docker Compose позволяет выполнять команды, описываемые в файле docker-compose.yml.
Эти команды можно выполнять столько раз, сколько потребуется. Интерфейс
командной строки Docker Compose упрощает взаимодействие с
многоконтейнерными приложениями. Этот инструмент устанавливается при
установке Docker.
▍Docker Swarm
Docker Swarm — это решение, предназначенное для управления контейнерными развёртываниями (то есть, как говорят, для оркестрации контейнеров). В этом материале из официального учебного курса по Docker можно найти сведения о Docker Swarm. Мне хотелось бы порекомендовать вам не тратить время на изучение Docker Swarm в том случае, если у вас нет на то веской причины.
▍Сервисы Docker
Сервисы Docker (Docker Services) — это различные части распределённого приложения. Вот что о них говорится в документации:
Сервисы — это всего лишь «контейнеры в продакшне». В пределах сервиса выполняется лишь один образ, но сервис определяет то, как именно выполняется образ. В частности, речь идёт о том, какие порты должны использоваться, сколько реплик контейнера должно выполняться для того, чтобы сервис обеспечивал бы необходимую вычислительную мощность, и так далее. Масштабирование сервисов предусматривает изменение количества экземпляров контейнера, в которых работает некая программа, благодаря чему сервису выделяется столько системных ресурсов, сколько ему требуется для решения некоей задачи.
Сервисы Docker позволяют масштабировать контейнеры в пределах нескольких демонов Docker, благодаря им существует и технология Docker Swarm.
Краткий перечень терминов
Давайте, буквально в двух словах, повторим только что представленные вам термины:
Механизмы Docker:
- Платформа Docker — ПО, благодаря которому можно работать с контейнерами.
- Движок Docker — клиент-серверное приложение (CE или Enterprise).
- Клиент Docker — программа, которая позволяет взаимодействовать с демоном Docker посредством CLI.
- Демон Docker — сервер Docker, отвечающий за управление ключевыми механизмами системы.
- Тома Docker — хранилище информации, используемое в контейнерах.
- Реестр Docker — удалённое хранилище образов.
- Хаб Docker — самый крупный реестр Docker, используемый по умолчанию.
- Репозиторий — коллекция образов Docker с одним и тем же именем.
Масштабирование:
- Сетевая подсистема Docker — среда, которая позволяет организовывать взаимодействие контейнеров.
- Docker Compose — технология, упрощающая работу с многоконтейнерными приложениями.
- Docker Swarm — средство для управления развёртыванием контейнеров.
- Сервисы Docker — контейнеры в продакшне.
Выше мы говорили о том, что рассмотрим дюжину терминов экосистемы
Docker, сравнивая их с дюжиной пончиков. Мы рассмотрели уже 12 терминов,
и, казалось бы, на этом можно и остановиться. Но мы, на всякий случай, добавим в наш список ещё один термин.
Этот термин относится не к самой платформе Docker, а к технологии, которая очень часто используется совместно с Docker.
Kubernetes
Kubernetes — это технология, которая позволяет автоматизировать развёртывание и масштабирование контейнеризированных приложений, а также управление ими.
Это — бесспорный лидер рынка средств для оркестрации контейнеров. Если
вам нужен инструмент для работы с группами контейнеров, для
масштабирования решений, основанных на них, используйте не Docker Swarm,
а Kubernetes. Kubernetes не является частью Docker. Они с Docker,
скорее, похожи на лучших друзей.
Теперь, когда вы ознакомились с общими понятиями Docker и с терминологией, вы можете приступить к практическим экспериментам.
Итоги: печём пончики с Docker
Помните, как в прошлый раз мы сравнивали платформу Docker с духовкой,
которую устанавливают в кухне? Сейчас самое время установить Docker на
вашей «кухне» и что-нибудь приготовить.
Docker можно запускать локально на Linux, Mac и Windows. Если вы
пользуетесь Mac или Windows, вы можете установить свежую версию Docker
Desktop отсюда.
Вместе с этой программой, кстати, устанавливается и Kubernetes. Если вы
устанавливаете Docker на другой платформе, то загляните сюда для того, чтобы найти подходящую версию.
После установки Docker взгляните на первые две части официального руководства.
В следующий раз мы продолжим разговор о Docker. В частности, поговорим о файлах Dockerfile.