Виртуализация с помощью контейнеров Docker

Опубликовано: 10 Июля, 2021

В мире программного обеспечения, где главными требованиями являются вездесущность и простота развертывания с минимальными накладными расходами, облако быстро занимает свое место в каждой картине. Контейнеры создают свой след на этом огромном пространстве облачного пространства с передовыми мировыми технологиями и ИТ-учреждениями, полагающимися на эту концепцию для удовлетворения своих инфраструктурных потребностей. Технологические гиганты, такие как Facebook, Google и Microsoft, используют контейнеры в своих оптимизированных процессах, чтобы облегчить безопасное и простое развертывание в производственных средах облака. Это развертывание с контейнерами предлагает метод, который абстрагирует приложение от среды выполнения; очень похоже на виртуальные машины, и это, конечно, делается с помощью виртуализации.

Здесь необходимо изучить две основные концепции:

  1. Как строятся контейнеры на технике виртуализации
  2. Как они предлагают альтернативу виртуальным машинам

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

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

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

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

2. Виртуальная машина - это форма виртуализации оборудования. Оборудование логически отделено от других ресурсов. Аппаратным обеспечением может быть любая система, например рабочий стол (с оборудованием и собственной ОС), называемый хост-машиной, на которой могут работать несколько виртуальных машин или гостевых машин, каждая со своими собственными отдельными операционными системами. Это стало возможным благодаря прошивке, называемой гипервизором.

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

Преимущества контейнеров:

  • Приложения можно развертывать, не беспокоясь о среде выполнения. В результате приложение можно легко перемещать по циклу разработки программного обеспечения и запускать где угодно, например, в Mac OS, Linux, Windows и даже в центрах обработки данных. Это приводит к меньшим затратам времени на изучение среды и больше времени на разработку новых функций.
  • Несколько контейнеров с приложениями могут быть запущены на одном экземпляре физических ресурсов, совместно использующих операционную систему. Эти легкие контейнеры быстры и эффективно используют доступные вычислительные ресурсы.
  • Контейнеры изолированы друг от друга, что дает разработчику возможность разделить службы приложения на разные контейнеры. Эти контейнеры не имеют общих зависимостей, и разработчик может изменять и обновлять каждый из них по своему желанию.
  • Контейнеры имеют встроенную возможность контроля версий.

Существуют различные платформы для развертывания контейнеров, такие как Docker, Google Kubernetes, Core OS, Red Hat и AWS. Однако из-за чрезвычайной популярности Docker Inc. в этой области контейнеры являются синонимом термина «контейнеры Docker».

Связанная статья
Виртуализация Linux: контейнеры Linux (lxc)