- PVSM.RU - https://www.pvsm.ru -

Изучаем Docker, часть 2: термины и концепции

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

Изучаем Docker, часть 2: термины и концепции - 1

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

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

Механизмы Docker

▍Платформа Docker

Изучаем Docker, часть 2: термины и концепции - 2

Docker

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

▍Движок Docker

Изучаем Docker, часть 2: термины и концепции - 3

Движок

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

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

▍Клиент Docker

Изучаем Docker, часть 2: термины и концепции - 4

Клиент Docker и другие механизмы экосистемы (взято из документации [7])

Клиент Docker (Docker Client [7]) — это основное средство, которое используют для взаимодействия с Docker. Так, при работе с интерфейсом командной строки Docker (Docker Command Line Interface [8], CLI), в терминал вводят команды, начинающиеся с ключевого слова docker, обращаясь к клиенту. Затем клиент использует API Docker для отправки команд демону Docker.

▍Демон Docker

Демон Docker (Docker Daemon [7]) — это сервер Docker, который ожидает запросов к API Docker. Демон Docker управляет образами, контейнерами, сетями и томами.

▍Тома Docker

Изучаем Docker, часть 2: термины и концепции - 5

Тома

Тома Docker (Docker Volumes [9]) представляют собой наиболее предпочтительный механизм постоянного хранения данных, потребляемых или производимых приложениями.

▍Реестр Docker

Реестр Docker (Docker Registry [10]) представляет собой удалённую платформу, используемую для хранения образов Docker. В ходе работы с Docker образы отправляют в реестр и загружают из него. Подобный реестр может быть организован тем, кто пользуется Docker. Кроме того, поставщики облачных услуг могут поддерживать и собственные реестры. Например, это касается AWS [11] и Google Cloud [12].

▍Хаб Docker

Хаб Docker (Docker Hub [10]) — это самый крупный реестр образов Docker. Кроме того, именно этот реестр используется при работе с Docker по умолчанию. Пользоваться хабом Docker можно бесплатно.

▍Репозиторий Docker

Репозиторием Docker (Docker Repository [13]) называют набор образов Docker, обладающих одинаковыми именами и разными тегами. Теги — это идентификаторы образов.

Обычно в репозиториях хранятся разные версии одних и тех же образов. Например, Python [14] — это имя популярнейшего официального репозитория Docker на хабе Docker. А вот Python:3.7-slim — это версия образа с тегом 3.7-slim в репозитории Python. В реестр можно отправить как целый репозиторий, так и отдельный образ.

Теперь поговорим о терминах экосистемы Docker, имеющих отношение к масштабированию.

Масштабирование решений, основанных на контейнерах

Следующие четыре термина имеют отношение к одновременному использованию нескольких контейнеров.

▍Сеть Docker

Изучаем Docker, часть 2: термины и концепции - 6

Сеть Docker (взято из документации [15])

Сетевые механизмы Docker (Docker Networking [15]) позволяют организовывать связь между контейнерами Docker. Соединённые с помощью сети контейнеры могут выполняться на одном и том же хосте или на разных хостах. Подробности о сетевой подсистеме Docker можно почитать здесь [16].

▍Docker Compose

Docker Compose [17] — это инструмент, который упрощает развёртывание приложений, для работы которых требуется несколько контейнеров Docker. Docker Compose позволяет выполнять команды, описываемые в файле docker-compose.yml. Эти команды можно выполнять столько раз, сколько потребуется. Интерфейс командной строки Docker Compose упрощает взаимодействие с многоконтейнерными приложениями. Этот инструмент устанавливается при установке Docker.

▍Docker Swarm

Изучаем Docker, часть 2: термины и концепции - 7

Рой пчёл

Docker Swarm [18] — это решение, предназначенное для управления контейнерными развёртываниями (то есть, как говорят, для оркестрации контейнеров). В этом [19] материале из официального учебного курса по Docker можно найти сведения о Docker Swarm. Мне хотелось бы порекомендовать вам не тратить время на изучение Docker Swarm в том случае, если у вас нет на то веской причины.

▍Сервисы Docker

Сервисы Docker (Docker Services [20]) — это различные части распределённого приложения. Вот что о них говорится в документации [20]:

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

Сервисы 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 терминов, и, казалось бы, на этом можно и остановиться. Но мы, на всякий случай [21], добавим в наш список ещё один термин.

Изучаем Docker, часть 2: термины и концепции - 8

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

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

Kubernetes

Изучаем Docker, часть 2: термины и концепции - 9

Kubernetes

Kubernetes [22] — это технология, которая позволяет автоматизировать развёртывание и масштабирование контейнеризированных приложений, а также управление ими. Это — бесспорный лидер рынка средств для оркестрации контейнеров. Если вам нужен инструмент для работы с группами контейнеров, для масштабирования решений, основанных на них, используйте не Docker Swarm, а Kubernetes. Kubernetes не является частью Docker. Они с Docker, скорее, похожи на лучших друзей.

Теперь, когда вы ознакомились с общими понятиями Docker и с терминологией, вы можете приступить к практическим экспериментам.

Итоги: печём пончики с Docker

Помните, как в прошлый раз мы сравнивали платформу Docker с духовкой, которую устанавливают в кухне? Сейчас самое время установить Docker на вашей «кухне» и что-нибудь приготовить.

Docker можно запускать локально на Linux, Mac и Windows. Если вы пользуетесь Mac или Windows, вы можете установить свежую версию Docker Desktop отсюда [23]. Вместе с этой программой, кстати, устанавливается и Kubernetes. Если вы устанавливаете Docker на другой платформе, то загляните сюда [4] для того, чтобы найти подходящую версию.

После установки Docker взгляните на первые две части официального руководства [24].

В следующий раз мы продолжим разговор о Docker. В частности, поговорим о файлах Dockerfile.

Уважаемые читатели! Если, читая материалы этой серии, вы открываете для себя Docker, просим рассказать о том, как вы планируете использовать технологии контейнеризации приложений.

Автор: ru_vds

Источник [25]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/razrabotka/308695

Ссылки в тексте:

[1] первой части: https://habr.com/ru/company/ruvds/blog/438796/

[2] Docker Platform: https://docs.docker.com/engine/docker-overview/#the-docker-platform

[3] Docker Engine: https://www.docker.com/products/docker-engine

[4] Docker Community Edition: https://docs.docker.com/install/

[5] опенсорсных инструментах: https://opensource.stackexchange.com/questions/5436/is-docker-still-free-and-open-source

[6] Docker Enterprise: https://www.docker.com/products/docker-enterprise

[7] документации: https://docs.docker.com/engine/docker-overview/

[8] Docker Command Line Interface: https://docs.docker.com/engine/reference/commandline/cli/

[9] Docker Volumes: https://docs.docker.com/storage/volumes/

[10] Docker Registry: https://hub.docker.com/

[11] AWS: https://aws.amazon.com/ecr/

[12] Google Cloud: https://cloud.google.com/container-registry/

[13] Docker Repository: https://docs.docker.com/docker-hub/repos/

[14] Python: https://hub.docker.com/_/python

[15] документации: https://docs.docker.com/engine/tutorials/networkingcontainers/

[16] здесь: https://www.oreilly.com/learning/what-is-docker-networking

[17] Docker Compose: https://docs.docker.com/compose/

[18] Docker Swarm: https://docs.docker.com/engine/swarm/

[19] этом: https://docs.docker.com/get-started/#recap-and-cheat-sheet

[20] Docker Services: https://docs.docker.com/get-started/part3/#introduction

[21] на всякий случай: https://www.britannica.com/story/why-is-a-bakers-dozen-13

[22] Kubernetes: https://kubernetes.io/

[23] отсюда: https://www.docker.com/products/docker-desktop

[24] официального руководства: https://docs.docker.com/get-started/

[25] Источник: https://habr.com/ru/post/439978/?utm_source=habrahabr&utm_medium=rss&utm_campaign=439978