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

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

Как docker, так и vagrant помогают создавать предсказуемые и повторяемые среды разработки. Однако 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

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

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 дает преимущество для быстрой разработки и совместного использования. Большинство команд используют оба варианта для бесперебойной работы.

Ссылки:

  • http://rhelblog. redhat.com/2015/08/28/the-history-of-containers/
  • http://www.virtualizationsoftware.com/top-5-enterprise-type-1-hypervisors/
  • https://blog.docker.com/2016/04/physical-virtual-container-deployment/
  • https://blog.docker.com/2016 /05/vm-or-containers/
  • https://content.pivotal.io/infographics/moments-in-container-history
  • https://content.pivotal.io/infographics/moments-in-container-history
  • https://content.pivotal.io/infographics/moments-in-container-history
  • Deliciousbrains.com/vagrant-docker-wordpress-development/
  • https://docs.docker.com/compose/
  • https://en.wikipedia. org/wiki/Timeline_of_virtualization_development
  • https://lifehacker.com/5204434/the-beginners-guide-to-creating-virtual-machines-with-virtualbox
  • https://medium.freecodecamp.org/a-beginner-friendly-introduction-to-containers-vms-and-docker-79a9e3e119b
  • https://opensource.com/resources/what- докер
  • https://scaleyourcode.com/interviews/inter view/9
  • https://stackoverflow.com/questions/16647069/should-i-use-vagrant-or-docker-for-creating-an-isolated-environment
  • https://www.devteam. пространство/блог/докер-против-бродяга-который-лучше-для-разработки/
  • https://www.docker.com/what-container
  • https://www.nextplatform.com/2015/08/06/containers-versus-virtual-machines-when-to-use-each-one-and-why/
  • https: //www.vagrantup.com/intro/vs/docker.html
  • LaraChat Live — Эпизод 26 — Докер против Бродяга [https://www.youtube.com/watch?v=onD5ti6K7TY]
  • Бродяга против Докера [https://www.youtube.com/watch?v=cTbHa4Mj_v8 ]
  • Бродяга против Докера? [https://www.youtube.com/watch?v=9tDW5OyCY2c]
Оцените статью
nanomode.ru
Добавить комментарий