Что такое виртуальная машина — программа позволяющая пользователю работать с другой операционной системой (ОС) на своем компьютере без необходимости переустанавливать ОС, установленную на компьютере. Данное действие осуществляется путем установки ОС в специальный «контейнер» — имитирующий аппаратное устройство компьютера. Устанавливаемая ОС работает так же как и на обычном компьютере.
Некоторые виртуальные машины: Microsoft PC,Virtual Box, VMware.
Указанные выше виртуальные машин отличаются набор предоставляемые средств: доступом к сети, аппаратному ускорению.
Чем хороши виртуальные машины: можно перенести настроенную среду с установленными программами на другую машину посредством копирования «контейнера», причем этих мест может быть несколько.
Это особенно удобно, когда:
- настройка программ занимает достаточно долгое время
- не хочется захламлять компьютер установленными программами
- устанавливаемая программа может принести вред компьютеру
- требуется тестирование разработанной программы на «чистой системе», чтобы убедиться что в сборку включены все необходимые библиотеки, и программное обеспечение будет работать у пользователя из коробки
- требуется отладить программу с возможностью одновременного просмотра документации на том же компьютере
- требуется имитировать определенное устройство, без доступа к физическому устройству.
Первоначально системы виртуализации применялись для desktop-ной разработки, но подобную технологию придумали как адаптировать для web-разработки, когда: разрабатываемое приложение должно запускаться в разном окружении.
В web разработке может использоваться Docker, который позволяет более компактным способом описывать рабочее окружение (в терминологии docker — контейнер), и более удобным способом производить настройку сетевого окружения, позволяя переназначать порты в момент запуска.
Для увеличения скорости и надежности работы web приложения его «разносят» на несколько машин: на одной оставляют web сервер, а на другой базу данных. Для управление настройкой / подготовкой / запуском такого окружения используется Docker Compose – механизм описания и управления группой контейнеров и связями между ними.