VMware против Docker: что это такое и как они работают?

Опубликовано: 15 Апреля, 2023
VMware против Docker: что это такое и как они работают?

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

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

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

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

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

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

Поскольку виртуальная машина функционирует как независимая машина, вы можете запускать отдельные виртуальные машины с разными гостевыми ОС (например, Unbuntu, Fedora Linux, Windows Server 2012, Windows Server 2019 и т. д.) на одном физическом хосте. Вы можете сделать это с помощью гипервизора, который подводит нас к тому, как работают виртуальные машины, которые я рассмотрю далее.

Как работают виртуальные машины?

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

У вас есть два типа гипервизоров. Гипервизор типа 1, наиболее распространенный тип, устанавливается непосредственно на физический сервер. Гипервизоры типа 1 также известны как гипервизоры на «голом железе». Второй тип, известный как гипервизор типа 2, также известный как размещенный гипервизор, устанавливается поверх основной ОС, например, Windows или macOS.

Гипервизор типа 1 компании VMware — ESXi, а гипервизор типа 2 — VMware Workstation Pro. У вас есть другие гипервизоры типа 1 и типа 2. Однако, поскольку это статья «VMware против Docker», я сосредоточусь только на продуктах VMware.

Изображение 14114

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

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

Что можно делать с виртуальными машинами и их преимущества

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

Что можно делать с виртуальными машинами Преимущества)
Создание нескольких виртуальных машин на одном гипервизоре/физическом хосте Иметь дополнительный ЦП, ОЗУ и/или хранилище, которые в значительной степени не используются в течение всего срока службы этого сервера. Наличие нескольких виртуальных машин может помочь максимально использовать ресурсы физического сервера.
Сократите расходы на оборудование, объединив несколько виртуальных машин на одном физическом сервере.
Создание копий или клонов ВМ Если с клоном произойдет что-то плохое, например, он будет заражен вредоносным ПО, вы можете удалить его и создать новый, чистый клон исходной виртуальной машины.

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

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

Что такое контейнер?

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

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

Как работают контейнеры?

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

Компонент движка Docker Функция
Демон Docker (dockerd) Обрабатывает запросы, отправленные через Docker API (он также управляет контейнерами Docker, изображениями и другими объектами Docker).
Докер-клиент (докер) Взаимодействует с демоном Docker через API Docker.
Докер API Облегчает связь с демоном Docker.
Изучите функции компонентов движка Docker.

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

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

Сочетание образов Docker и репозиториев, особенно Docker Hub, — еще одна важная причина популярности контейнеров Docker. Эта комбинация еще больше упрощает разработку программного обеспечения на основе контейнеров.

Как и в случае с виртуальными машинами, вы также можете делать многое с контейнерами. Вот некоторые из них.

Что можно делать с контейнерами и их преимущества

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

Что можно делать с контейнерами Преимущества)
Запускайте контейнерное приложение изолированно от других контейнеров на том же узле. Упрощает совместное использование приложений. Каждое контейнерное приложение просто работает независимо от того, какие другие приложения вы установили в его целевой среде.
Изолированный характер контейнера делает его более безопасным, чем традиционное приложение. Скомпрометированный контейнер не может легко повлиять на другие контейнеры на том же хосте.
Работайте на «голом железе», виртуальных машинах, десктопах и даже общедоступных облаках, таких как AWS и Azure. Их способность работать на разных платформах, а также небольшие размеры делают контейнеры чрезвычайно портативными. Этот атрибут поможет вам получить еще большую гибкость при развертывании и совместном использовании приложений.
Легко создавайте и уничтожайте контейнеры Выводит масштабируемость на совершенно новый уровень.
Что можно делать с контейнерами и их преимущества.

Теперь давайте обсудим плюсы и минусы VMware и Docker.

Плюсы и минусы VMware

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

Несмотря на свою полезность в ИТ-операциях, виртуальные машины VMware также имеют недостатки. Вот некоторые плюсы и минусы, связанные с этим решением для виртуализации.

Плюсы

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

Минусы

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

Плюсы и минусы Докера

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

Плюсы

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

Минусы

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

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

VMware против Докера

В таблице ниже показаны основные различия между VMware и Docker.

Атрибут виртуальные машины VMware Докер-контейнеры
Виртуализированная часть ИТ-инфраструктуры Аппаратное обеспечение Операционная система
ОС включена Вся гостевая ОС Только пользовательское пространство ОС (пользовательское пространство относится к коду в ОС вне ядра)
Общие размеры файлов Десятки мегабайт Десятки гигабайт
Время загрузки Несколько минут Несколько секунд
Изоляция Сильнее Слабее
Срок жизни Многие длятся месяцами или даже годами Большинство длится несколько минут
Виртуальные машины VMware и контейнеры Docker.

На первый взгляд может показаться, что контейнеры лучше, чем виртуальные машины. Значит ли это, что контейнеры навсегда заменят виртуальные машины? Давайте узнаем в следующем разделе.

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

Последний отчет The State of Cloud Native Development показывает, что 61% разработчиков серверной части уже используют контейнеры. Backend-разработка фокусируется на всем, чего вы не видите на веб-сайте или в приложении. Но он в значительной степени отвечает за свои ключевые функции, логику приложения, базу данных и т. д.

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

Можно ли запустить Docker на виртуальной машине VMware?

Вместо противопоставления VMware и Docker вы когда-нибудь задумывались, могут ли эти два решения сосуществовать? Контейнеры Docker можно запускать на виртуальной машине VMware.

Самый простой способ сделать это — использовать Photon OS, минималистскую ОС VMware на базе Linux, оптимизированную для контейнеров. Docker уже работает по умолчанию в полной версии Photon OS. Поскольку Docker использует ядро Linux, вы также можете запускать его поверх популярных дистрибутивов Linux, таких как Ubuntu, CentOS или Debian. Наконец, вы также можете использовать такие дистрибутивы, как Fedora CoreOS и RancherOS, которые поставляются со встроенными инструментами Docker.

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

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

Последние мысли

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

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

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

Если во время чтения у вас возникли вопросы о VMware и Docker, ознакомьтесь с разделами часто задаваемых вопросов и ресурсов ниже. Возможно, вы найдете там некоторые ответы.

Часто задаваемые вопросы

Могут ли малые предприятия извлечь выгоду из контейнеров?

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

Облачные вычисления лучше, чем контейнеры?

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

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

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

Как Kubernetes сравнивается с Docker?

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

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

Хотя вы можете развертывать контейнеры на виртуальных машинах (метод, описанный в статье выше), у вас есть и другие способы совместного использования этих двух технологий. Например, один из них — использование KubeVirt. Щелкните эту ссылку для более подробного обсуждения.