Бродяга

Докер против бродяг

Докер против бродяг

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

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

Начнем сначала с базовых технологий.

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

Виртуальная машина (ВМ) имитирует физический компьютер. Он поставляется со своей собственной полной операционной системой и распределением ресурсов. Хост-компьютер предоставляет необходимые физические ресурсы, но виртуализированная среда работает как независимая машина со своим собственным BIOS, процессором, хранилищем и сетевыми адаптерами.

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

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

Идея ВМ оказалась удачной. IBM начала создавать операционные системы на основе виртуальных машин. IBM System 370 (S / 370) и IBM System 390 (S / 390), обе системы на основе IBM VM / ESA, стали популярными среди предприятий и университетов, поскольку они позволили учреждениям разрешить своим пользователям совместно использовать вычислительные ресурсы, не влияя на среды друг друга. Идея также помогла создать операционную систему Unix и язык программирования Java.

Современные виртуальные машины работают на гипервизорах. Гипервизоры - это программное обеспечение, прошивка или оборудование, отвечающие за создание и выполнение виртуальных машин. На рынке доступно множество гипервизоров. KVM, Red Hat Enterprise Virtualization (RHEV), XenServer, Microsoft Hyper-V и VMware vSphere / ESXi - известные игроки.

Сегодня виртуальные машины стимулировали рост облачных вычислений. Amazon AWS, Microsoft Azure, Google Cloud, Digital Ocean и другие облачные компании сильно зависят от технологий виртуализации.

Контейнеры

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

В 1979 году системные вызовы chroot могли изолировать процессы для Unix. Это было первое зерно идеи контейнера. Ранняя контейнерная технология началась с FreeBSD Jails в 2000 году. Год спустя Linux VServer позволил нескольким машинам Linux работать на одном хосте. В 2004 году Oracle Solaris Zones предоставляла функциональность, аналогичную FreeBSD Jails. В 2006-2007 годах компания Google разработала Process Container, а затем объединила его с ядром Linux. Контейнеры Linux (LXC) были созданы в 2008 году, чтобы использовать преимущества контрольных групп Linux и пространства имен. В 2013 году Docker был создан путем объединения идей LXC. Он также добавил инструменты для простого создания и извлечения изображений контейнеров.

Докер

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

Контейнеры Docker создаются из образов Docker. Образы Docker можно рассматривать как снимки машин. Пользователи могут легко запустить контейнер из изображения. Изображения создаются как слои. Предположим, команде разработчиков нужен контейнер с Apache и Python, установленным в определенной версии Linux. Разработчик может загрузить образ Linux из Docker Hub, запустить контейнер, установить Apache и Python, создать новый образ из контейнера и поделиться им. Другим членам команды не нужно выполнять ту же установку. Это помогает поддерживать согласованную среду для всех.

Docker также поддерживает сценарии и многоконтейнерные приложения. Пользователи могут использовать текстовый файл Dockerfile для определения требований, а затем создавать контейнеры с помощью Docker Compose. Приведенный выше пример создания сервера Apache / Python / Linux также может быть получен с помощью этого процесса. С Docker Compose командам нужно только предоставить общий доступ к Dockerfile, чтобы создать ту же среду.

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

Бродяга

Vagrant - это инструмент с открытым исходным кодом, который помогает создавать и поддерживать виртуальные машины. Работает с VirtualBox, VMWare, AWS и другими провайдерами.

Vagrant упрощает управление виртуальными машинами. Используя Vagrantfile, разработчики могут определять свойства виртуальной машины, такие как операционная система, установки программного обеспечения и другие. Текстовый файл Vagrantfile может быть передан через систему управления версиями, а необходимая машина может быть запущена с помощью простой команды, такой как «vagrant up». Затем пользователи могут входить в систему как на физический сервер.

Когда использовать Docker или Vagrant

Использование Docker или Vagrant часто сводится к необходимости использования контейнеров или виртуальных машин. Вот некоторые сходства и различия между Docker и Vagrant с точки зрения использования:

Сходства

И Docker, и Vagrant имеют легко настраиваемые среды, которыми можно управлять с помощью скриптов. Они также дружелюбны к облаку.

Отличия

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

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

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

Заключение

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

Рекомендации:

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