Продвинутый Django 5 для продолжающих

Прогресс по курсу:  0/193

11.1 Знакомство с Docker
3 из 3 шагов пройдено

Архитектура и компоненты Docker

В Docker используется архитектура клиент/сервер, в соответствии с которой клиент взаимодействует с демоном Docker, а тот предоставляет все необходимые клиенту услуги. Рассмотрим компоненты рабочего процесса и инструменты для управления контейнерами и их развертывания, составляющие экосистему Docker:

  • Сервер, или демон Docker: Выполняется в хост-системе и управляет всеми запущенными контейнерами.
  • Контейнер Docker: Автономная виртуальная система, содержащая выполняющийся процесс, все файлы, зависимости, адресное пространство процесса и сетевые порты, необходимые приложению. Так как каждый контейнер имеет свое пространство портов, следует организовать их отображение в фактические порты на уровне Docker. Мы еще вернемся к этому вопросу.

  • Клиент Docker: Пользовательский интерфейс, или интерфейс командной строки, для взаимодействий с демоном Docker.

  • Образы Docker: Шаблонные файлы, доступные только для чтения, с контейнером Docker. Их можно перемещать и передавать. В отличие от виртуальных машин, эти файлы можно хранить в системе управления версиями. Более того, можно воспользоваться командой docker diff, чтобы увидеть различия между двумя образами. Каждый образ состоит из нескольких уровней, или слоев, которые могут совместно использоваться несколькими образами. Допустим, вы обновили существующее приложение. В результате в существующий образ будет добавлен дополнительный уровень. Благодаря такой организации можно распространять и развертывать только новые уровни, упрощая и ускоряя процесс.

  • Реестр Docker: Репозиторий для хранения и распространения образов контейнеров Docker. Примером широко известного реестра может служить Docker Hub (во многом похож на GitHub), куда можно помещать и откуда можно извлекать образы. Внутри своей организации вы можете организовать свой реестр.

  • Файл Dockerfile: Это очень простой текстовый файл, содержащий команды, которые выполняют сборку образов Docker. Посредством этих команд можно устанавливать дополнительные программные компоненты, настраивать переменные окружения, рабочие каталоги и точку входа ENTRYPOINT, а также добавлять новый код.

  • Docker Machine: Docker Machine позволяет развертывать узлы Docker на локальной машине или внутри общедоступного либо частного облака, включая облачные системы таких поставщиков, как Amazon и Microsoft Azure. Также он обеспечивает управление узлами посредством команд startstopinspect и других.

  • Docker Swarm: По сути своей, это готовый к использованию механизм кластеризации, позволяющий объединить несколько узлов Docker в один большой хост Docker. Это отдельный инструмент, который можно установить с помощью Docker Machine или вручную, получив образ Swarm. На момент написания этих строк он был интегрирован в Docker Engine. Процесс установки очень прост, достаточно лишь настроить диспетчер Swarm на всех узлах. Самое замечательное – это то, что мы можем просто приказать Swarm запустить наши контейнеры, а тот сам решит, на каких узлах их запустить, избавив нас от сложности выбора. Для динамической настройки и управления службами в контейнерах можно использовать службу обнаружения. Интегрированный вариант называется режимом Swarm. Он действует подобно инструменту Swarm, поддерживает балансировку нагрузки и обнаружение служб и может рассматриваться как полноценный механизм управления. 

  • Компоновщик Docker Compose: Приложения часто состоят из множества компонентов, и соответственно они будут выполняться в нескольких контейнерах. В состав Docker входит инструмент Compose, с помощью которого можно легко запустить приложение в нескольких контейнерах. Вы можете определить окружение для приложения в общем файле Dockerfile и определить перечень служб в файле docker-compose.yml, после чего Docker автоматически будет создавать и запускать необходимые контейнеры, как определено в этих файлах. Инструмент Compose так же, как Docker Machine, имеет свой набор команд для управления службами приложения.

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


Будьте вежливы и соблюдайте наши принципы сообщества. Пожалуйста, не оставляйте решения и подсказки в комментариях, для этого есть отдельный форум.
Оставить комментарий
Нет обсуждений. Начните первое.