Spread the love

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

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

Я полагаю, вы понимаете важность Docker в DevOps. Теперь за этим фантастическим инструментом должна стоять удивительная, хорошо продуманная архитектура. Не так ли?

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

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

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

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

Докер Архитектура

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

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

Докер Двигатель

Это основная часть всей системы Docker. Docker Engine — это приложение, построенное по архитектуре клиент-сервер. Он установлен на хост-машине. В Docker Engine есть три компонента:

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

Докер-клиент

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

Реестры докеров

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

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

Докер-объекты

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

Картинки

Образы Docker — это шаблоны только для чтения с инструкциями по созданию контейнера Docker. Образ Docker можно извлечь из концентратора Docker и использовать как есть, или вы можете добавить дополнительные инструкции к базовому образу и создать новый и измененный образ Docker. Вы также можете создавать свои собственные образы докеров, используя файл докеров. Создайте dockerfile со всеми инструкциями по созданию контейнера и его запуску; он создаст ваш собственный образ докера.

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

Контейнеры

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

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

docker run -i -t ubuntu /bin/bash

Объемы

Сохраняемые данные, сгенерированные Docker и используемые контейнерами Docker, хранятся в Volumes. Они полностью управляются докером через docker CLI или Docker API. Тома работают как с контейнерами Windows, так и с Linux. Вместо сохранения данных на доступном для записи уровне контейнера всегда лучше использовать для них тома. Содержимое тома существует вне жизненного цикла контейнера, поэтому использование тома не увеличивает размер контейнера.

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

docker run -d --name toadmin.ru  -v geekvolume:/app nginx:latest

сети

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

  • Мост: это сетевой драйвер по умолчанию для контейнера. Вы используете эту сеть, когда ваше приложение работает в автономных контейнерах, т. е. несколько контейнеров взаимодействуют с одним и тем же хостом докеров.
  • Хост: этот драйвер устраняет сетевую изоляцию между контейнерами докеров и хостом докеров. Он используется, когда вам не нужна сетевая изоляция между хостом и контейнером.
  • Overlay: эта сеть позволяет службам роя взаимодействовать друг с другом. Он используется, когда контейнеры работают на разных хостах Docker или когда сервисы роя формируются несколькими приложениями.
  • Нет: этот драйвер отключает всю сеть.
  • macvlan: этот драйвер присваивает контейнерам MAC-адреса, чтобы они выглядели как физические устройства. Трафик маршрутизируется между контейнерами через их mac-адреса. Эта сеть используется, когда вы хотите, чтобы контейнеры выглядели как физические устройства, например, при переносе настройки виртуальной машины.
  • Вывод

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

    Понравилось читать статью? Как насчет того, чтобы поделиться с миром?

    x