Давайте познакомимся с архитектурой Docker и ее основными компонентами.

Я предполагаю, что у вас есть базовое понимание Docker.

Если нет, вы можете обратиться к предыдущей статье.

Я полагаю, вы понимаете важность Docker в DevOps.

Теперь за этим фантастическим инструментом должна стоять удивительная, продуманная архитектура.

Не так ли?

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

Традиционная и виртуализация нового поколения

Раньше мы создавали виртуальные машины, и у каждой виртуальной машины была ОС, которая занимала много места и делала систему тяжелой.

Теперь в случае с Docker-контейнером у вас есть одна ОС, а ресурсы распределяются между контейнерами.

Следовательно, система легкая и загружается за считанные секунды.

Позвольте мне объяснить вам компоненты архитектуры докера.

Docker Архитектура

Ниже приведена простая схема архитектуры Docker.

Позвольте мне объяснить вам компоненты архитектуры докера.

Docker Engine

Это основная часть всей системы Docker.

Docker Engine – это приложение, которое следует архитектуре клиент-сервер.

Он установлен на хост-машине.

В Docker Engine есть три компонента:

  • Server: это демон docker, называемый dockerd. Он может создавать и управлять образами контейнерами, сетью и др.
  • Rest API: используется для указания демону docker, что делать.
  • Интерфейс командной строки (CLI): это клиент, который используется для ввода команд Docker.

Docker Client

Пользователи Docker могут взаимодействовать с Docker через клиента.

Когда запускаются любые команды docker, клиент отправляет их демону dockerd, который их выполняет.

Docker API используется командами Docker.

Клиент Docker может общаться с несколькими демонами.

Docker Registries

Это место, где хранятся образа Docker.

Это может быть общедоступный реестр Docker или частный реестр Docker.

Docker Hub – это место по умолчанию для образов Docker, публичный реестр его репозиториев.

Вы также можете создать и запустить свой собственный личный реестр.

Когда вы выполняете команды Docker Pull или Docker Run, требуемый образ Docker извлекается из настроенного реестра.

Когда вы выполняете команду docker push, образ Docker сохраняется в настроенном реестре.

Объекты Docker

Когда вы работаете с Docker, вы используете образа, контейнеры, тома, сети; все это объекты Docker.

Образы

Образа Docker – это шаблоны только для чтения с инструкциями по созданию контейнера Docker.

Образ Docker можно извлечь из концентратора Docker и использовать как есть, или вы можете добавить дополнительные инструкции к базовому образу и создать новый и модифицированный образ Docker.

Вы можете создавать свои собственные изображения докеров, также используя файл Docker.

Создайте dockerfile со всеми инструкциями, чтобы создать контейнер и запустить его; это создаст ваш собственный образ докера.

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

Когда вы редактируете dockerfile и перестраиваете его, только измененная часть перестраивается в верхнем слое.

Контейнеры

После запуска образа Docker он создает контейнер Docker.

Все приложения и их окружение работают внутри этого контейнера.

Вы можете использовать Docker API или CLI для запуска, остановки, удаления контейнера Docker.

Ниже приведен пример команды для запуска Docker-контейнера Ubuntu:

docker run -i -t ubuntu /bin/bash

Тома

Постоянные данные, генерируемые Docker и используемые контейнерами Docker, хранятся в томах.

Они полностью управляются Docker через CLI Docker или API Docker

. Тома работают на контейнерах Windows и Linux.

Вместо того чтобы сохранять данные в доступном для записи слое контейнера, всегда полезно использовать для него тома.

Содержимое тома существует вне жизненного цикла контейнера, поэтому использование тома не увеличивает размер контейнера.

Вы можете использовать флаг -v или -mount, чтобы запустить контейнер с томом. В этом примере команды вы используете том geekvolume с контейнером geekflare.

docker run -d --name geekflare  -v geekvolume:/app nginx:latest

Сети

 

Сеть Docker – это канал, через который общаются все изолированные контейнеры.

В докере в основном пять сетевых драйверов:

  1. bridge: это сетевой драйвер по умолчанию для контейнера. Вы используете эту сеть, когда ваше приложение работает в автономных контейнерах, то есть несколько контейнеров взаимодействуют с одним и тем же хостом докера.
  2. host: Этот драйвер удаляет сетевую изоляцию между док-контейнерами и док-хостом. Он используется, когда вам не нужна сетевая изоляция между хостом и контейнером.
  3. overlay: эта сеть позволяет службам swarm взаимодействовать друг с другом. Он используется, когда контейнеры работают на разных хостах Docker или когда службы swarm сформированы из нескольких приложений.
  4. None: этот драйвер отключает все сети.
  5. macvlan: этот драйвер назначает MAC-адрес контейнерам, чтобы они выглядели как физические устройства. Трафик направляется между контейнерами через их mac-адреса. Эта сеть используется, когда вы хотите, чтобы контейнеры выглядели как физическое устройство, например, при переносе настройки виртуальной машины.

Заключение

Я надеюсь, что это даст вам представление об архитектуре Docker и ее основных компонентах.

 

Поделитесь статьей:

Добавить комментарий