Машина контейнер: Контейнеры и виртуальные машины | Microsoft Learn

Содержание

Контейнеры и виртуальные машины | Microsoft Learn

Twitter LinkedIn Facebook Адрес электронной почты

  • Статья
  • Чтение занимает 3 мин

Область применения: Windows Server 2022, Windows Server 2019, Windows Server 2016

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

Общие сведения о контейнерах см. в разделе Windows и контейнеры.

Архитектура контейнера

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

Архитектура виртуальной машины

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

Контейнеры и виртуальные машины

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

ФункцияВиртуальная машинаКонтейнер
ИзоляцияОбеспечивает полную изоляцию от операционной системы узла и других виртуальных машин. Это полезно, когда важна строгая граница безопасности, например для разделения приложений от конкурирующих компаний на одном сервере или в кластере.Обычно предоставляет упрощенную изоляцию от узла и других контейнеров, но не предоставляет настолько надежную границу безопасности, как в случае виртуальных машин. (Усилить безопасность можно, используя режим изоляции Hyper-V, чтобы изолировать каждый контейнер в небольшой виртуальной машине).
Операционная системаСодержит полноценную операционную систему, включая ядро, поэтому требует больше системных ресурсов (ЦП, памяти и хранилища).Запускает часть операционной системы в пользовательском режиме и ее можно адаптировать, чтобы она содержала только необходимые службы для приложения, что позволит использовать меньше системных ресурсов.
Совместимость с гостевой системойРаботает практически с любой операционной системой в виртуальной машинеРаботает на той же версии операционной системы, что и узел (изоляция Hyper-V позволяет запускать более ранние версии одной и той же ОС в среде небольшой виртуальной машины).
РазвертываниеРазвертывание отдельных виртуальных машин с помощью центра администрирования Windows или диспетчера Hyper-V; развертывание нескольких виртуальных машин с помощью PowerShell или System Center Virtual Machine Manager.Развертывание отдельных контейнеров с помощью Docker с использованием командной строки; развертывание нескольких контейнеров с помощью Orchestrator, например службы Azure Kubernetes.
Обновления и исправления для операционной системыЗагрузка и установка обновлений операционной системы на каждой виртуальной машине. Для установки новой версии операционной системы требуется обновить, а зачастую и создать полностью новую виртуальную машину.
Это может занять много времени, особенно если у вас много виртуальных машин…
Обновление или исправление файлов операционной системы в контейнере выполняется точно так же:
  1. Измените файл сборки образа контейнера (известный как Dockerfile), чтобы он указывал на последнюю версию базового образа Windows.
  2. Пересоберите образ контейнера с новым базовым образом.
  3. Отправьте образ контейнера в реестр контейнеров.
  4. Повторно разверните образ с помощью Orchestrator.
    Orchestrator предоставляет широкие возможности автоматизации при масштабировании. Дополнительные сведения см. в разделе Tutorial: Update an application in Azure Kubernetes Service (Руководство по обновлению приложений в службе Azure Kubernetes).
Постоянное хранилище
Использует виртуальный жесткий диск (VHD) для локального хранилища для одной виртуальной машины или общий файловый ресурс SMB для совместно используемого несколькими серверами хранилищаИспользует диски Azure для локального хранилища для одного узла или службы файлов Azure (общие ресурсы SMB) для совместно используемого несколькими узлами или серверами хранилища.
Балансировка нагрузкиБалансировка нагрузки виртуальной машины перемещает выполняющиеся виртуальные машины на другие серверы в отказоустойчивом кластере.Сами контейнеры не перемещаются. Вместо этого Orchestrator может автоматически запускать или прекращать работу контейнеров на узлах кластера для управления изменениями нагрузки и доступности.
ОтказоустойчивостьВиртуальные машины могут выполнить отработку отказа на другой сервер в кластере с перезапуском операционной системы виртуальной машины на новом сервере. В случае сбоя узла кластера все контейнеры, работающие на нем, быстро пересоздаются Orchestrator на другом узле кластера.
СетьИспользует виртуальные сетевые адаптеры.Использует изолированное представление виртуального сетевого адаптера, предоставляя меньшую виртуализацию: брандмауэр узла используется контейнерами совместно — при этом используется меньше ресурсов. Дополнительные сведения см. в разделе Сетевые подключения контейнеров Windows.

Сравнение контейнеров и виртуальных машин

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

Иэн Бьюкэнэн

Главный разработчик решений

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

  • Скорость итерации
    Поскольку контейнеры не требуют много ресурсов и включают в себя только программное обеспечение верхнего уровня, их можно быстро модифицировать и итеративно менять.
  • Надежная экосистема
    В большинстве контейнерных сред выполнения существует общедоступный размещенный репозиторий готовых контейнеров. Репозитории содержат множество популярных приложений, таких как базы данных или системы обмена сообщениями, которые можно мгновенно загрузить и выполнить, чтобы сэкономить время команды разработчиков.
  • Уязвимость общего узла
    Поскольку все контейнеры используют одну и ту же опорную аппаратную систему, находящуюся ниже уровня операционной системы, эксплойт в одном контейнере может вырваться на свободу и повлиять на общие аппаратные ресурсы. Большинство популярных контейнерных сред выполнения предлагают публичные репозитории готовых контейнеров. Использование таких публичных образов сопряжено с угрозой безопасности, поскольку они могут содержать эксплойты или уязвимости, которыми могут воспользоваться злоумышленники.

Популярные поставщики контейнеров

Связанные материалы

Сравнение Kubernetes и Docker

СМ.
РЕШЕНИЕ

Управление компонентами с помощью Compass

  • Docker
    Это самая популярная и широко используемая контейнерная среда выполнения. Docker Hub — это гигантский общедоступный репозиторий популярных программных приложений в контейнерах. Контейнеры Docker Hub можно мгновенно загружать и развертывать в локальных средах выполнения Docker.
  • RKT
    RKT (читается как «рокет») — это контейнерная система, ориентированная прежде всего на безопасность. Контейнеры RKT не допускают выполнения небезопасных функций, если только пользователь явным образом не отключил функции безопасности. Контейнеры RKT нацелены на решение проблем безопасности, связанных с перекрестными заражением, от которых страдают другие системы контейнерных сред.
  • Контейнеры Linux (LXC)
    Проект Linux Containers представляет собой систему выполнения контейнеров Linux с открытым исходным кодом. LXC используется для изоляции процессов уровня операционной системы друг от друга. В основе Docker на самом деле лежит технология LXC. Контейнеры Linux обеспечивают независимую от поставщика контейнерную среду выполнения с открытым исходным кодом.
  • CRI-O
    CRI-O — это реализация интерфейса среды выполнения для контейнеров Kubernetes (CRI), которая позволяет использовать среды выполнения, совместимые с инициативой открытых контейнеров (OCI). Это легковесная альтернатива использованию Docker в качестве среды выполнения для Kubernetes.

Что такое виртуальная машина?

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

Плюсы

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

Минусы

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

Популярные поставщики виртуальных машин

  • VirtualBox
    Это бесплатная система эмуляции архитектуры x86 с открытым исходным кодом, принадлежащая Oracle. VirtualBox — одна из самых популярных и известных платформ виртуальных машин с экосистемой дополнительных инструментов для разработки и распространения образов виртуальных машин.
  • VMware
    VMware — это публичная акционерная компания, которая построила свой бизнес на основе одной из первых технологий аппаратной виртуализации x86. Решения VMware поставляются в комплекте с гипервизором — утилитой для развертывания нескольких виртуальных машин и управления ими. VMware имеет надежный пользовательский интерфейс для управления виртуальными машинами. Это отличный вариант для корпоративного использования виртуальных машин с официальной поддержкой.
  • QEMU
    QEMU — самый надежный вариант виртуальной машины для эмуляции аппаратного обеспечения. Поддерживается любая стандартная аппаратная архитектура. QEMU — утилита командной строки без графического пользовательского интерфейса для настройки или выполнения, что делает это решение одним из самых быстрых вариантов виртуальных машин.

Какой вариант подходит для вас?

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

Как использовать контейнеры и виртуальные машины вместе?

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

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

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

Ian Buchanan

У Иэна большой опыт разработки на Java и .NET. Но гораздо больше он известен как специалист по применению agile-методик в крупных корпорациях. Сейчас он с головой погрузился в развивающуюся культуру DevOps и инструменты, улучшающие процессы непрерывной интеграции, непрерывной поставки и анализа данных. В течение своей карьеры он с успехом управлял корпоративными инструментами разработки ПО на всех этапах ее жизненного цикла. Он руководил на корпоративном уровне модернизацией процессов, которая приводила к улучшению производительности, качества и повышению удовлетворенности потребителей. Он создал международные команды, в которых ценятся саморегуляция и самоорганизация. Когда Иэн не выступает и не пишет код, он использует свои знания для создания парсеров, использования предметно-ориентированных языков и метапрограммирования. Подписывайтесь на Иэна: @devpartisan.

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

Следующая тема

контейнеров против виртуальных машин | Atlassian

Узнайте о различиях между контейнерами и виртуальными машинами (ВМ), популярных поставщиках для каждого из них и о том, как их можно использовать вместе

Ян Бьюкенен

Главный инженер по решениям

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

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

Популярные поставщики контейнеров

Связанный материал

Kubernetes против Docker

СМ. и широко используемая среда выполнения контейнеров. Docker Hub — это гигантский общедоступный репозиторий популярных программных приложений в контейнерах. Контейнеры в Docker Hub можно мгновенно загрузить и развернуть в локальной среде выполнения Docker.
  • RKT
    RKT — это контейнерная система, ориентированная на безопасность. Контейнеры RKT не позволяют использовать небезопасные функции контейнера, если только пользователь явно не активирует небезопасные функции. Контейнеры RKT направлены на решение основных проблем безопасности, связанных с эксплуатацией перекрестного заражения, от которых страдают другие системы среды выполнения контейнеров.
  • Linux Containers (LXC)
    Проект Linux Containers — это система среды выполнения контейнеров Linux с открытым исходным кодом. LXC используется для изоляции операционных процессов системного уровня друг от друга. Docker фактически использует LXC за кулисами. Контейнеры Linux стремятся предложить нейтральную среду выполнения контейнеров с открытым исходным кодом.
  • CRI-O
    CRI-O — это реализация интерфейса среды выполнения контейнеров (CRI) Kubernetes, которая позволяет использовать среды выполнения, совместимые с Open Container Initiative (OCI). Это облегченная альтернатива использованию Docker в качестве среды выполнения для Kubernetes.
     
  • Что такое виртуальная машина?

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

    Pros

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

    Минусы

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

    Популярные поставщики виртуальных машин

    • Virtualbox
      Virtualbox — это бесплатная система эмуляции архитектуры x86 с открытым исходным кодом, принадлежащая Oracle. Virtualbox — одна из самых популярных и зарекомендовавших себя платформ виртуальных машин с экосистемой дополнительных инструментов, помогающих разрабатывать и распространять образы виртуальных машин.
    • VMware
      VMware — это публичная компания, которая построила свой бизнес на одной из первых технологий аппаратной виртуализации x86. VMware поставляется с гипервизором, который представляет собой утилиту для развертывания и управления несколькими виртуальными машинами. VMware имеет надежный пользовательский интерфейс для управления виртуальными машинами. VMware — отличный вариант корпоративной виртуальной машины, предлагающий поддержку.
    • QEMU
      QEUM — это наиболее надежный вариант виртуальной машины с аппаратной эмуляцией. Он поддерживает любую общую аппаратную архитектуру. QEMU — это утилита, работающая только из командной строки и не предлагающая графический пользовательский интерфейс для настройки или выполнения. Этот компромисс делает QEMU одним из самых быстрых вариантов виртуальных машин.

    Какой вариант вам больше подходит?

    Если у вас есть особые требования к оборудованию для вашего проекта или вы разрабатываете на одной аппаратной платформе и вам нужно ориентироваться на другую, например Windows или MacOS, вам потребуется использовать виртуальную машину. Большинство других требований «только для программного обеспечения» можно выполнить с помощью контейнеров.

    Как вы можете использовать контейнеры и виртуальные машины вместе?

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

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

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

    Ян Бьюкенен

    https://www.linkedin.com/in/ianbuchanan/

    Несмотря на то, что Ян обладает обширным и глубоким опытом работы как с Java, так и с .NET, он наиболее известен как поборник гибких методов на крупных предприятиях. В настоящее время он занимается формирующейся культурой DevOps и инструментами для улучшения непрерывной интеграции, непрерывной доставки и анализа данных. За свою карьеру он успешно управлял инструментами разработки корпоративного программного обеспечения на всех этапах их жизненного цикла. Он способствовал совершенствованию процессов в масштабах всей организации, что привело к повышению производительности, повышению качества и удовлетворенности клиентов. Он создал многонациональные команды, которые ценят самоуправление и самоорганизацию. Когда вы не говорите и не программируете, вы можете увидеть, как Ян потворствует своим увлечениям парсерами, метапрограммированием и предметно-ориентированными языками. Подписывайтесь на Яна на @devpartisan.

    Поделиться этой статьей

    Следующая тема

    Контейнеры и виртуальные машины — сравнение технологий развертывания

    В чем разница между контейнерами и виртуальными машинами?

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

    Где используются контейнеры и виртуальные машины?

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

    Проблемы с развертыванием программного обеспечения

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

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

    Назначение виртуальных машин

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

    Назначение контейнеров

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

    Сходства между контейнерами и виртуальными машинами

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

    Ключевые отличия: контейнеры и виртуальные машины

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

    Как они работают

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

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

    Основная технология

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

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

    Размер

    Файлы образа виртуальной машины имеют больший размер (несколько ГБ), поскольку содержат собственную операционную систему. Увеличение ресурсов означает, что вы можете дублировать, разделять, абстрагировать и эмулировать целые серверы, базы данных, рабочие столы и сети. Файлы-контейнеры более легкие, и вы можете измерять их в МБ. Контейнеры упаковывают только те ресурсы, которые необходимы для запуска одного приложения.

    Когда использовать контейнеры или виртуальные машины

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

    Конфигурация среды

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

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

    Скорость разработки программного обеспечения

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

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

    Масштабируемость

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

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

    Читать о микросервисах »

    Читать об API »

    Обзор различий: контейнер и виртуальная машина

    Характеристики

    Контейнер

    Виртуальная машина

    Определение

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

    Цифровая копия физической машины. Разделяет физическое оборудование на несколько сред.

    Виртуализация

    Виртуализирует операционную систему.

    Виртуализирует базовую физическую инфраструктуру.

    Инкапсуляция

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

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

    Технология

    Механизм контейнера координирует ресурсы с базовой операционной системой.

    Координация гипервизора с базовой операционной системой или оборудованием.

    Размер

    Меньший вес (подумайте о мегабайтах).

    Гораздо больше (подумайте о ГБ).

    Управление

    Меньший контроль окружающей среды за пределами контейнера.

    Больше контроля над окружающей средой.

    Гибкость

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

    Менее гибкий. Миграция сопряжена с трудностями.

    Масштабируемость

    Высокая масштабируемость. Возможна гранулярная масштабируемость с помощью микросервисов.

    Масштабирование может быть дорогостоящим. Требуется переход с локальных экземпляров на облачные для экономичного масштабирования.

      Узнайте больше о контейнерах Узнайте больше о виртуальных машинах

     

    Как AWS может помочь с вашими контейнерами и виртуальными машинами?

    AWS предлагает несколько сервисов для поддержки всех ваших потребностей в развертывании приложений. Вот несколько примеров:

    • AWS App2Container — это инструмент контейнеризации, который позволяет разработчикам программного обеспечения модернизировать устаревшие приложения. Разработчики используют AWS App2Container для превращения приложений Java и .NET в контейнерные приложения.
    • Amazon Elastic Container Registry (Amazon ECR ) — это высокодоступный и безопасный частный репозиторий контейнеров, который упрощает хранение образов контейнеров Docker и управление ими.
    • Amazon Elastic Container Service (Amazon ECS ) — это масштабируемый и высокопроизводительный сервис оркестрации контейнеров для запуска контейнеров Docker в облаке AWS.
    • Amazon Elastic Compute Cloud (Amazon EC2) позволяет осуществлять детальный контроль над облачными экземплярами и выбирать нужные процессоры, хранилища и сети.
    • AWS Fargate — это технология для Amazon ECS, которая позволяет запускать контейнеры Docker без развертывания или управления инфраструктурой.

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

    Ваш адрес email не будет опубликован. Обязательные поля помечены *