Правильно ли мое понимание виртуальных машин и контейнеров Docker?

Какие проблемы они пытаются решить:

Запуск программы в среде, для которой она не предназначена, без необходимости ее модификации. Особенно запуск двух программ одновременно в среде, где это обычно невозможно сделать. Примеры:

  • под управлением двух ОС, то есть Windows 10 и Ubuntu 18.10 на одной машине одновременно
  • запуск двух программ, которым требуется разная версия среды выполнения (т. е. узел 6 и узел 10) одновременно

Общая идея для достижения этого:

изоляция

Части программного обеспечения не знают друг о друге и базовой системе, которая используется, чтобы заставить это работать (если мы явно не разрешаем разделение определенных ресурсов)

Ссылка поп-культуры:

Трумэн шоу.

Часть программного обеспечения, которая запускается внутри виртуальной машины или контейнера-докера, похожа на Трумэна: она не знает, что среда, в которой он живет, - это просто песочница, изолированная от реального мира, и все, что происходит внутри, организуется и отслеживается сторонними разработчиками.: бегуны шоу (демон гипервизора или докера соответственно). Но иногда случается, что приложение испытывает какое-то странное / нереальное поведение (поскольку шоураннеры не идеальны).

Чем они отличаются:

Виртуальная машина - это абстракция аппаратного уровня (виртуальная машина эмулирует реальную машину), в то время как контейнер Docker является абстракцией уровня приложения (она "эмулирует" среду ОС, в которой контейнеры совместно используют ядро ​​хоста и имеют собственную файловую систему, пространство имен и сеть).

0 ответов

Другие вопросы по тегам