Какие проблемы они пытаются решить:
Запуск программы в среде, для которой она не предназначена, без необходимости ее модификации.Особенно запуск двух программ одновременно в среде, в которой это обычно невозможно сделать. Примеры:
- под управлением двух ОС, то есть Windows 10 и Ubuntu 18.10 на одной машине одновременно
- запуск двух программ, которым требуется разная версия среды выполнения (т. Е. Узел 6 и узел 10) одновременно
Общая идея для достижения этой цели:
Изоляция
Части программного обеспечения не знают друг о друге и базовой системе, которая используется для его работы (если мы явно не разрешаем совместное использование определенных ресурсов)
Ссылка на поп-культуру:
Шоу Трумана.
Часть программного обеспечения, которая запускается внутри виртуальной машины или контейнера-докера, похожа на Трумэна: он не знает, что среда, в которой он живет, - это просто песочница, изолированная от реального мира и всего, чтопроисходящее внутри организовано и наблюдается сторонним представителем: организаторами шоу (гипервизор или демон докеров соответственно).Но иногда случается, что приложение испытывает какое-то странное / нереальное поведение (поскольку showrunners не идеальны).
Чем они отличаются:
Виртуальная машина - это абстракция аппаратного уровня (ВМ эмулирует реальноемашина), в то время как контейнер Docker является абстракцией уровня приложения (он «эмулирует» среду ОС, то есть контейнеры совместно используют ядро хоста и имеют собственную файловую систему, пространство имен и сеть)