Найти в Дзене
Linux | Network | DevOps

Docker с нуля — понятным языком для DevOps. Часть 2. Термины и архитектура Docker

Автор оригинала: Jeff Hale В первой части перевода серии материалов, посвящённых Docker, мы сделали общий обзор этой системы. В частности, мы говорили о том, почему технологии контейнеризации важны в наше время, о том, что такое контейнеры Docker, и о том, с чем их можно сравнить. Сегодня мы поговорим об экосистеме Docker и рассмотрим важные термины, с которыми вы можете столкнуться на пути изучения и использования Docker. Продолжив аналогию с разными вкусностями, представим, что наши термины — это пончики. Дюжина пончиков. Я разбил термины, с которыми вы можете столкнуться в ходе работы с
Docker, на две части. Думаю, это облегчит их запоминание. Первый блок
терминов будет относиться к механизмам Docker. Второй — к средствам
масштабирования решений, основанных на контейнерах. Docker
Платформа Docker (Docker Platform) — это программа, которая даёт нам возможность упаковывать приложения в контейнеры и запускать их на серверах. Платформа Docker позволяет помещать в контейнеры код и е
Оглавление

Автор оригинала: Jeff Hale

В первой части перевода серии материалов, посвящённых Docker, мы сделали общий обзор этой системы. В частности, мы говорили о том, почему технологии контейнеризации важны в наше время, о том, что такое контейнеры Docker, и о том, с чем их можно сравнить. Сегодня мы поговорим об экосистеме Docker и рассмотрим важные термины, с которыми вы можете столкнуться на пути изучения и использования Docker. Продолжив аналогию с разными вкусностями, представим, что наши термины — это пончики. Дюжина пончиков.

Термины экосистемы Docker

Я разбил термины, с которыми вы можете столкнуться в ходе работы с
Docker, на две части. Думаю, это облегчит их запоминание. Первый блок
терминов будет относиться к механизмам Docker. Второй — к средствам
масштабирования решений, основанных на контейнерах.

Механизмы Docker

▍Платформа Docker

-2

Docker

Платформа Docker (
Docker Platform) — это программа, которая даёт нам возможность упаковывать приложения в контейнеры и запускать их на серверах. Платформа Docker позволяет помещать в контейнеры код и его зависимости. Как результат, системы, основанные на контейнерах, легко масштабировать, так как контейнеры можно переносить и воспроизводить.

▍Движок Docker

Движок
Движок


Движок Docker (
Docker Engine) — это клиент-серверное приложение. Компания Docker разделила движок Docker на два продукта. Docker Community Edition (CE) — это бесплатное ПО, во многом основанное на опенсорсных инструментах.


Вероятно, вы будете пользоваться именно этой версией Docker.
Docker Enterprise — это платная версия системы, дающая пользователям дополнительные возможности в области поддержки систем, управления ими и безопасности. Платная версия Docker даёт компании средства, необходимые для её существования.

▍Клиент Docker

-4

Клиент 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

-6

Сеть 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:

  1. Платформа Docker — ПО, благодаря которому можно работать с контейнерами.
  2. Движок Docker — клиент-серверное приложение (CE или Enterprise).
  3. Клиент Docker — программа, которая позволяет взаимодействовать с демоном Docker посредством CLI.
  4. Демон Docker — сервер Docker, отвечающий за управление ключевыми механизмами системы.
  5. Тома Docker — хранилище информации, используемое в контейнерах.
  6. Реестр Docker — удалённое хранилище образов.
  7. Хаб Docker — самый крупный реестр Docker, используемый по умолчанию.
  8. Репозиторий — коллекция образов Docker с одним и тем же именем.

Масштабирование:

  1. Сетевая подсистема Docker — среда, которая позволяет организовывать взаимодействие контейнеров.
  2. Docker Compose — технология, упрощающая работу с многоконтейнерными приложениями.
  3. Docker Swarm — средство для управления развёртыванием контейнеров.
  4. Сервисы Docker — контейнеры в продакшне.

Выше мы говорили о том, что рассмотрим дюжину терминов экосистемы
Docker, сравнивая их с дюжиной пончиков. Мы рассмотрели уже 12 терминов,
и, казалось бы, на этом можно и остановиться. Но мы,
на всякий случай, добавим в наш список ещё один термин.

Вот, на всякий случай, ещё один пончик
Вот, на всякий случай, ещё один пончик


Этот термин относится не к самой платформе Docker, а к технологии, которая очень часто используется совместно с Docker.

Kubernetes

Kubernetes
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.