Виртуализация физического оборудования была одной из самых многообещающих тенденций XXI века. Было достигнуто молчаливое согласие о том, что современные вычисления должны выходить за пределы физического оборудования. Как два самых популярных решения для виртуальных ресурсов на рынке, докер и виртуальные машины (VM) сыграли важную роль в стимулировании перехода к виртуализированному управлению ресурсами.
Однако, многие люди застряли с выбором. В зависимости от того, кого вы спросите, у Docker и виртуальных машин есть свои преимущества. В этой статье мы рассмотрим дебаты Docker и виртуальных машин, чтобы узнать, какие преимущества каждый из них может принести вашей организации..
Что такое Докер?
докер это инструмент с открытым исходным кодом, который использует контейнеры для создания, развернуть, и управлять распределенными приложениями. Разработчики используют контейнеры для создания пакетов для приложений, которые включают все основные компоненты (например, библиотеки), которые необходимы для изолированной работы приложения. Отсоединение контейнера от компьютера, на котором он запущен, гарантирует, что приложение будет работать, даже если пользователи запускают пользовательские настройки на своем компьютере с Linux, и служит для минимизации использования ресурсов компьютера..
С тех пор как Docker был выпущен в 2014 году, он получил статус критиков. Многие организации предпочитают использовать Docker поверх виртуальных машин из-за преимуществ, которые он может предложить. Сегодня такие компании, как Visa и PayPal, развернули Docker для управления своими приложениями..
Что такое виртуальная машина?
виртуальная машина – это файл (часто называется гипервизор) который действует как физический компьютер. Виртуальная машина использует физические ресурсы устройства, на котором работает, для репликации среды физического устройства. Как и любая другая программа, виртуальная машина имеет собственное окно на вашем устройстве. Вы можете запустить несколько виртуальных машин на одном устройстве.
В то время как виртуальная машина использует ресурсы компьютера для функционирования, она фактически предоставляет свое собственное виртуальное оборудование. Виртуальное оборудование виртуальной машины включает в себя Процессор, Память, жесткие диски, и сетевые интерфейсы. Для поддержания эффективности работы компьютера виртуальное оборудование сопоставляется с физическим оборудованием устройства..
Виртуальные машины изолированы от системы физического устройства и работают в песочница. Другими словами, виртуальная машина полностью автономна. Это делает их идеальными для создания резервных копий и запуска программного обеспечения. Самые популярные продукты на рынке VMWare и VirtualBox.
Зачем мне использовать Docker?
Одной из основных причин, по которой компании используют Docker, является альтернатива виртуальным машинам. Докер используется как альтернатива, потому что они более легкий с точки зрения ресурсов, чем виртуальные машины. Контейнеры совместно используют операционные системы, тогда как виртуальные машины предназначены для эмуляции виртуального оборудования. Благодаря совместному использованию операционных систем приложения Docker могут работать, потребляя при этом часть ресурсов виртуальной машины..
Docker использует механизм Docker, который находится в одном экземпляре Linux, а не на виртуальных ресурсоемких машинах, используемых виртуальными машинами. Эта структура означает, что контейнеры Docker могут поддерживать в пять раз больше экземпляров серверных приложений, чем вы могли бы на виртуальной машине. Широкому распространению Docker также помог тот факт, что разработчики могут добавлять свой собственный код для настройки и развертывания приложений Lean. Эти приложения могут быть развернуты прямо на компьютерах или в облаке.
Зачем мне нужна виртуальная машина?
Несмотря на то, что Docker имеет преимущество в отношении ресурсов, виртуальные машины остаются невероятно важными для современных организаций. Они по-прежнему предоставляют надежные средства для ограничения затрат, связанных с физическим оборудованием.. Виртуализация вашей инфраструктуры с помощью виртуальных машин обеспечивает более эффективное использование сетевых ресурсов.. Например, вам не нужно выделять ресурсы питания и вентиляторов, чтобы поддерживать виртуальную машину, как физический компьютер..
Вы также можете гораздо эффективнее выделять ресурсы с помощью виртуальных машин.. Виртуальные машины можно переносить с сервера на сервер, чтобы обеспечить равномерное распределение вычислительных ресурсов между устройствами. Администраторы могут манипулировать виртуальными машинами, чтобы физические возможности хранения и обработки распределялись равномерно между несколькими машинами..
Виртуальные машины также снижают риск сбоя вашей инфраструктуры. В то время как физическое устройство может столкнуться с ухудшением производительности и со временем выйти из строя, виртуальное оборудование не может. Как следствие, многие администраторы начали использовать виртуальные машины в качестве решения для аварийного восстановления и для резервного копирования своих данных.
Докер против виртуальных машин лицом к лицу
Менее эффективными | Более эффективным |
ВМ работают на своих ОС | Контейнеры разделяют хост-ОС |
Аппаратная виртуализация | Виртуализация ОС |
Более безопасный (сегрегированный) | Менее безопасный (изоляция на уровне процесса) |
Производительность
Как вы можете видеть, Docker имеет некоторые присущие его структуре преимущества. Один контейнер может совместно использовать библиотеки ядра и приложений так, как этого не могут делать виртуальные машины. также, Docker требует меньше вычислительных ресурсов, чем виртуальные машины, что обеспечивает лучшее взаимодействие внутри приложения.
В режиме реального времени Docker менее ресурсоемок и может запускаться намного быстрее, чем виртуальные машины. Причина в том, что виртуальные машины должны загружать ОС при каждом запуске. Точно так же вам не нужно выделять ресурсы для контейнеров, как с виртуальными машинами..
управление
С точки зрения управления каждая из этих технологий предлагает более гибкий подход к предоставлению ресурсов. Однако обе эти технологии все еще нуждаются в эффективном управлении, чтобы хорошо функционировать в вашей среде.. С контейнерами все сводится к управлению проблемами безопасности и обеспечению того, чтобы общая операционная система не сталкивалась с ошибками.
С виртуальными машинами сложность сводится к управлению виртуальными ресурсами. Например, вы нужна пропускная способность и вычислительная мощность для поддержки виртуальных машин (особенно если вы используете несколько виртуальных машин на одном устройстве). Если вы не выделите необходимые ресурсы, виртуальные машины не будут работать эффективно.
Администратору также необходимо учитывать, как они согласовывают использование виртуальной машины с ресурсами, доступными по всей сети.. Хотя возможность перемещения виртуальных машин отлично подходит для более эффективного использования ресурсов, она требует обеспечения равномерного распределения ресурсов. Это также верно в отношении Docker, но не является проблемой из-за его легкой производительности.
Конечно, даже если вы прекрасно управляете своими ресурсами, с виртуальными машинами все равно связан ряд рисков. Здесь риск превышения имеющихся ресурсов или один аппаратный сбой, уничтожающий кучу виртуальных машин за один раз. Это создает дополнительное давление на администратора, чтобы оставаться в курсе всех мелких деталей использования. Эта проблема не уникальна для виртуальных машин, но для них это, безусловно, большая проблема, чем для контейнеров Docker..
портативность
Переносимость каждой технологии актуальна для тех, кто хочет оптимизировать сетевые ресурсы. Docker-контейнеры – это автономные пакеты, которые запускают необходимое приложение. Контейнеры Docker можно легко портировать, поскольку они не имеют отдельных ОС. После того, как они были портированы, они могут начать работу в течение нескольких секунд, что делает их более портативной альтернативой..
В противоположность этому, виртуальные машины не так портативны, потому что у каждой из них есть своя ОС. Это делает их громоздкими, поскольку ОС не может быть перенесена на другую платформу и функционирует нормально. В средах, где вам нужно развернуть различные приложения для решения различных задач, вам лучше использовать Docker. Отделение операционной системы от операционной системы хост-устройства гарантирует, что приложения могут работать без каких-либо ненужных прерываний.
Безопасность
Одной из ключевых областей спора между поддержкой виртуальных машин и Docker является то, какая установка более безопасна. Это особенно сложная область, поскольку необходимо обсудить множество факторов, от врожденных уязвимостей Docker до единственной точки отказа гипервизора виртуальной машины. В этом разделе мы рассмотрим две самые большие угрозы безопасности каждой из этих технологий..
Сегрегация ОС
Docker и виртуальные машины отделяют приложения друг от друга. Это означает, что если входит одно приложение, оно не может повлиять на другие приложения. В теории это обеспечивает идеальную защиту, но у Докера есть одна основная проблема; все приложения используют одну операционную систему. Если операционная система взломана из скомпрометированного приложения, то атака может затронуть все контейнеры одновременно.
Виртуальные машины предотвращают эту проблему путем хранение ОС, используемой для управления приложением, отдельно от гипервизора который взаимодействует с оборудованием. Существует ОС, с которой пользователь может взаимодействовать, чтобы использовать приложение, но он не позволяет им взаимодействовать с оборудованием. Это означает, что если приложение имеет ошибку, то крайне маловероятно, что оно окажет неблагоприятное влияние на аппаратное обеспечение хост-системы..
В этом смысле виртуальные машины обеспечивают большую защиту от сбоев ОС и нарушений безопасности, чем контейнеры Docker. Модель разделения приложений, используемая Docker для оптимизации использования ресурсов, достигается за счет безопасности.. Виртуальные машины имеют преимущество, потому что они держат ОС отдельно от оборудования, чтобы минимизировать риск повреждения.
Единственная точка отказа: гипервизор
Однако то, что виртуальные машины более безопасны с точки зрения разделения приложений, не означает, что они не лишены своих собственных уязвимостей. В виртуальных машинах гипервизоры – это единственная точка отказа. Если гипервизор выйдет из строя, тонна приложений может упасть одним махом. Это означает, что если злоумышленник захочет повредить вашу сеть, он может отправить вредоносное ПО на виртуальную машину..
В сравнении, Контейнеры Docker не имеют единой точки отказа. Хотя единственная точка отказа может сделать приложения уязвимыми, гипервизоры очень трудно нарушить. Хотя злоумышленник может взломать гипервизор, это маловероятно из-за сложности используемого кода. На этом этапе отказ гипервизора является более потенциальной областью небезопасности, чем широко используемая точка входа.
Стоимость
Стоимость Docker и виртуальных машин – это еще одна область, которую сложно измерить. 451 Исследования показывают, что контейнеры имеют более низкую совокупную стоимость владения или общую стоимость владения, чем виртуализация оборудования. Причиной этого является то, что контейнеры Docker используют ресурсы более эффективно. Каждая виртуальная машина имеет свою собственную операционную систему, которая должна поддерживаться хост-системой. Это требует вычислительных ресурсов, которые увеличивают долгосрочные затраты на физическое оборудование..
Docker устраняет эту проблему, используя одну операционную систему для всех своих приложений. Контейнеры используют одну ОС в попытке минимизировать требования к ресурсам. При запуске нескольких приложений это особенно актуально, поскольку вы можете запускать много разных приложений только с одной операционной системой. Для сравнения, виртуальные машины будут иметь операционную систему для каждого приложения, что означает, что есть больше ресурсов, за которые нужно платить.
Сложно измерить прямую экономию на контейнерах Docker, но необходимо учитывать ряд факторов. Вы сможете получить больше отдачи от вашей текущей сетевой инфраструктуры с контейнерами, чем с виртуальными машинами. Аналогичным образом, если вам нужно увеличить масштаб, вы можете сделать это с меньшим количеством ресурсов и потребляя больше энергии для поддержки виртуальных машин..
Какой я должен использовать и когда?
Хотя Docker имеет преимущество в отношении эффективности и производительности, не думайте, что контейнеры по своей природе лучше, чем виртуальные машины. Докер и виртуальные машины имеют свои преимущества в определенных ситуациях. Определение того, находится ли приложение в контейнере или виртуальной машине, полностью зависит от ваших требований к использованию. В этом разделе мы рассмотрим, как выбирать между двумя.
Тип приложения
Первый фактор, который вы должны учитывать при выборе, – это тип приложения, которое вы хотите развернуть. Контейнеры предназначены для поддержки приложений, не связанных с операционной системой хоста. Контейнеры Docker предназначены для тех приложений, которые вы хотите запускать независимо от инфраструктуры хост-системы. Это означает, что если вы хотите поддерживать встроенные системы, которые более тесно интегрируются с хост-устройством, вам лучше выбрать виртуальную машину.
Размер
Следующий фактор, который вы должны учитывать при выборе между ними, – это размер вашего приложения. Количество вычислительных ресурсов, необходимых вашему приложению для эффективной работы, определит, какой вам нужно выбрать. Если вы хотите поддерживать приложения, для работы которых требуется только один компьютер, например, микросервисы, то контейнер Docker будет более естественным выбором. Напротив, виртуальная машина была бы лучшим выбором для высокоприоритетных сервисов, таких как базы данных..
Случаи использования
инфраструктура | нет | да |
Контейнерная среда Хосты | нет | да |
Базы данных | нет | да |
Устаревшие приложения | да | нет |
Microservices | да | нет |
Веб-приложения | да | нет |
Как вы видете, виртуальные машины имеют преимущество в трех основных случаях использования: инфраструктура, хосты контейнерной среды, и базы данных. Основной район с инфраструктурой. Виртуальные машины могут создавать сетевую инфраструктуру в форме маршрутизаторов и брандмауэров, что невозможно с помощью Docker. Виртуальные машины имеют возможность взаимодействовать на уровне виртуального оборудования и позволяют пользователю вносить изменения в инфраструктуру. Виртуальные машины часто используются в качестве хостов-контейнеров из-за их способности взаимодействовать с оборудованием.
С другой стороны, Docker предлагает легкий способ развертывания устаревших приложений практически в любой среде. Наличие библиотек вместе с приложением облегчает их развертывание. Микросервисы также идеально подходят для Docker, поскольку простая структура контейнеров хорошо подходит для приложений с одной основной задачей (в отличие от приложения с множеством различных обязанностей)..
Docker против виртуальных машин: лучше вместе
Хотя Docker и виртуальные машины имеют свои преимущества перед аппаратными устройствами, Docker является более эффективным из них с точки зрения использования ресурсов. Если бы две организации были полностью идентичны и работали на одном и том же оборудовании, то компания, использующая Docker, могла бы поддерживать больше приложений. Способность Docker управлять приложениями и развертывать их просто намного превышает возможности виртуальных машин.
В конечном итоге это сводится к внутренней архитектуре виртуальных машин. Эмуляция физической инфраструктуры может быть более легкой, чем аппаратное устройство, но по-прежнему слишком много жира, чтобы не отставать от Docker. Несомненно, обеими технологиями нужно управлять осторожно, чтобы максимизировать эффективность.
Тем не менее, не увлекайтесь полным списанием виртуальных машин. Комбинируя их вместе, вы сможете охватить целый ряд вариантов использования и сохранить виртуальные ресурсы максимально гибкими. Вы можете наслаждаться безопасностью виртуальных машин в особо важных приложениях, а также низкими вычислительными требованиями Docker..
Смотрите также: Инструменты и программное обеспечение для мониторинга ВМ
шедшие на виртуальных машинах. Кроме того, Docker обеспечивает более быстрое развертывание приложений и более простое управление ресурсами. Зачем мне нужна виртуальная машина? Виртуальные машины могут быть полезны в тех случаях, когда необходимо эмулировать физическое оборудование, например, для тестирования программного обеспечения или для запуска приложений, которые не могут работать на определенной операционной системе. Виртуальные машины также могут быть полезны для создания изолированных сред для работы с конфиденциальными данными. Докер против виртуальных машин лицом к лицу Когда дело доходит до выбора между Docker и виртуальными машинами, многое зависит от конкретных потребностей вашей организации. Вот несколько факторов, которые следует учитывать при выборе между этими двумя решениями: Производительность Docker обеспечивает более высокую производительность, чем виртуальные машины, потому что он использует меньше ресурсов. Виртуальные машины, с другой стороны, могут быть более мощными и могут обеспечивать более высокую производительность в некоторых случаях. управление Docker обеспечивает более простое управление ресурсами, чем виртуальные машины. Виртуальные машины могут быть более сложными в управлении, особенно если у вас есть несколько виртуальных машин на одном устройстве. портативность Docker обеспечивает более высокую портативность, чем виртуальные машины, потому что он использует контейнеры, которые могут быть легко перенесены между различными устройствами. Виртуальные машины могут быть менее портативными, особенно если они были созданы для конкретной операционной системы. Безопасность Docker и виртуальные машины обеспечивают различные уровни безопасности. Docker обеспечивает более высокий уровень безопасности, чем виртуальные машины, потому что он использует сегрегацию ОС, которая обеспечивает изоляцию контейнеров друг от друга. Виртуальные машины, с другой стороны, могут быть более безопасными, если они были настроены правильно. Сегрегация ОС Docker использует сегрегацию ОС, которая обеспечивает изоляцию контейнеров друг от друга. Это означает, что если один контейнер был скомпрометирован, это не повлияет на другие контейнеры. Виртуальные машины также используют сегрегацию ОС, но это может быть менее эффективным, чем в Docker. Единственная точка отказа: гипервизор Виртуальные машины имеют единственную точку отказа – гипервизор. Если гипервизор выходит из строя, все виртуальные машины, работающие на этом устройстве, перестают работать. Docker не имеет единственной точки от