Обзор архитектуры Docker и компоненты Docker [для начинающих]

Опубликовано: 2020-12-31

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

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

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

Итак, почему они начали внедрять контейнеризацию вместо виртуальных машин? В этой статье мы дадим подробные разъяснения по всем таким вопросам.

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

Оглавление

Докер-контейнеры

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

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

Причины, по которым контейнеры Docker получили широкое распространение

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

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

Виртуальные машины против контейнеров Docker

До того, как мы использовали контейнеризацию для наших методов DevOps, виртуальные машины были на вершине колоды. Раньше мы создавали виртуальные машины для каждого приложения.

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

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

Источник изображения

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

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

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

Сервер (Демон)

Демон Docker — это непрерывный процесс, работающий в фоновом режиме и управляющий всеми объектами Docker. Он прослушивает запросы Docker API, выдвинутые клиентом, и постоянно их обрабатывает.

API отдыха

Это интерфейс, который клиенты Docker используют для взаимодействия с демоном Docker. Клиенты могут общаться с демоном через API и могут давать ему инструкции.

Клиент

Клиент Docker — это интерфейс командной строки (CLI), который может взаимодействовать с демоном. Это упрощает весь процесс управления контейнерами.

Источник изображения

Клиент Docker (который может быть HTTP-клиентом, таким как CLI) взаимодействует с демоном, который выполняет тяжелую задачу по созданию, запуску и совместному использованию контейнеров. Клиент и демон могут работать на одном компьютере или подключать клиента к удаленному демону. Клиент и демон взаимодействуют друг с другом с помощью Rest API через сокеты или сетевой интерфейс. Клиент Docker помогает пользователям управлять объектами Docker, такими как контейнеры, образы, тома и т. д. Узнайте больше о проектах Docker.

Запишитесь на курсы по разработке программного обеспечения в лучших университетах мира. Участвуйте в программах Executive PG, Advanced Certificate Programs или Master Programs, чтобы ускорить свою карьеру.

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

Как обсуждалось ранее, Docker использует архитектуру клиент-сервер, в которой клиент общается с демоном через Rest API. Архитектура Docker состоит из нескольких компонентов, как описано ниже.

Источник изображения

Демон

Он прослушивает запросы API, инициированные клиентами, и управляет объектами Docker, включая контейнеры, образы, тома и сети. Он также может взаимодействовать с другими демонами для управления службами Docker, особенно для управления большими сетями Docker.

Клиент

Пользователи Docker могут общаться с демоном с помощью клиента Docker. Пользователи выполняют такие команды, как «Docker run…», используя клиент, такой как CLI, который затем перенаправляет эти команды в Docker (демон), в конечном итоге выполняя их. Клиент Docker взаимодействует с несколькими демонами.

Реестры

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

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

При работе с Docker мы взаимодействуем с несколькими объектами, такими как контейнеры, образы, тома, сети и т. д.

Некоторые из этих объектов являются

Картинки

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

Контейнеры

Контейнеры — это экземпляры образов, которые обеспечивают изолированные среды для приложений. У них есть доступ только к ресурсам, которые определяются образами, используемыми для их создания.

Сеть

Docker Networks позволяет изолированным контейнерам в одной сети взаимодействовать и совместно использовать ресурсы. Некоторые сети, предоставляемые Docker, включают мост, хост, оверлей, Macvlan и т. д.

Место хранения

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

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

Заключение

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

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

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

Теперь вы находитесь на правильном пути, чтобы погрузиться в прекрасный мир Docker Containers. Теперь вы должны лучше понимать, как различные ресурсы Docker работают вместе, чтобы предоставить вам набор функций, которые позволят вам беспрепятственно создавать, развертывать и совместно использовать свои приложения.

Изучите архитектуру Docker с upGrad

Начните свое путешествие по созданию приложений ускоренными темпами с upGrad.

UpGrad Education Pvt. Ltd. предлагает эксклюзивный курс по специализации разработки программного обеспечения в DevOps, который готовит кандидатов к работе с крупными ИТ-гигантами.

Основные моменты курса

Программа upGrad Executive PG по специальности «Разработка программного обеспечения в области больших данных» представляет собой тщательно разработанный онлайн-курс, разделенный на 12 месяцев.

В этой учебной программе вы будете

  • Получите эксклюзивный доступ к материалам по науке о данных и машинному обучению
  • Работа над живыми проектами и заданиями
  • Получите всестороннюю поддержку карьеры
  • Изучите десять языков программирования и инструменты
  • Получите преданное студенческое наставничество

Подготовьтесь к разработке приложений DevOps с помощью upGrad.

Зачем ждать

Подайте заявку сегодня!

Подготовьтесь к карьере будущего

Подать заявку на получение степени магистра в области разработки программного обеспечения