Система виртуализации

Что такое виртуальная машина — программа позволяющая пользователю работать с другой операционной системой (ОС) на своем компьютере без необходимости переустанавливать ОС, установленную на компьютере. Данное действие осуществляется путем установки ОС в специальный «контейнер» — имитирующий аппаратное устройство компьютера. Устанавливаемая ОС работает так же как и на обычном компьютере.

Некоторые виртуальные машины: Microsoft PC,Virtual Box, VMware.

Указанные выше виртуальные машин отличаются набор предоставляемые средств: доступом к сети, аппаратному ускорению.

Чем хороши виртуальные машины: можно перенести настроенную среду с установленными программами на другую машину посредством копирования «контейнера», причем этих мест может быть несколько.

Это особенно удобно, когда:

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

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

В web разработке может использоваться Docker, который позволяет более компактным способом описывать рабочее окружение (в терминологии docker — контейнер), и более удобным способом производить настройку сетевого окружения, позволяя переназначать порты в момент запуска.

Для увеличения скорости и надежности работы web приложения его «разносят» на несколько машин: на одной оставляют web сервер, а на другой базу данных. Для управление настройкой / подготовкой / запуском такого окружения используется Docker Compose – механизм описания и управления группой контейнеров и связями между ними.