CI/CD

Виртуальные машины (ВМ) и контейнеры

Прежде чем мы обсудим виртуализацию и контейнеризацию, давайте узнаем, что такое виртуальные машины (ВМ) и контейнеры.

Виртуальные машины (ВМ)

Виртуальная машина (ВМ) — это виртуальная среда, функционирующая как виртуальная компьютерная система с собственным ЦП, памятью, сетевым интерфейсом и хранилищем, созданная на физическом оборудовании. Программное обеспечение, называемое гипервизором, отделяет ресурсы машины от оборудования и выделяет их соответствующим образом, чтобы они могли использоваться виртуальной машиной.

ВМ изолированы от остальной системы, и несколько ВМ могут существовать на одном оборудовании, например на сервере. Их можно перемещать между хост-серверами в зависимости от спроса или для более эффективного использования ресурсов.

Что такое гипервизор?

Гипервизор, иногда называемый монитором виртуальных машин (VMM), изолирует операционную систему и ресурсы от виртуальных машин и позволяет создавать эти виртуальные машины и управлять ими. Гипервизор рассматривает такие ресурсы, как ЦП, память и хранилище, как пул ресурсов, которые можно легко перераспределить между существующими гостевыми системами или новыми виртуальными машинами.

Зачем использовать виртуальную машину?

Консолидация серверов — основная причина использования виртуальных машин. Большинство развертываний операционных систем и приложений используют лишь небольшой объем доступных физических ресурсов. Виртуализируя наши серверы, мы можем разместить множество виртуальных серверов на каждом физическом сервере, чтобы улучшить использование оборудования. Это избавляет нас от необходимости покупать дополнительные физические ресурсы.

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

Контейнеры

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

Зачем нужны контейнеры?

Давайте обсудим некоторые преимущества использования контейнеров:

Разделение ответственности

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

Переносимость рабочей нагрузки

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

Изоляция приложений

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

Гибкая разработка

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

Эффективные операции

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

Виртуализация и контейнеризация

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

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