Мое понимание контейнеров Linux (LXC) заключается в том, что они предоставляют встроенный гипервизор для систем Linux, аналогичный Hyper-V Windows, представленному в Windows 8. Под «родным гипервизором» я подразумеваю возможность систему Linux для размещения гостевых виртуальных машин внутри нее без необходимости установки какого-либо специализированного программного обеспечения для виртуализации.
Мое понимание Docker заключается в том, что он каким-то образом строится поверх LXC и позволяет разработчикам приложений определять:
- Точный стек приложений виртуальной машины/узла, включая ОС, точную конфигурацию и настройку ОС, а также любые инструменты или приложения, установленные/настроенные/развернутые в этой ОС; и
- Точные требования к ресурсам для запуска этой виртуальной машины/узла, включая требования к ЦП, требования к памяти/диску/сети, требования к балансировке нагрузки и репликации и т. д. Затем Docker определяет, на каких узлах запускать контейнер, используя эти объявленные требования в качестве базового уровня.
Итак, во-первых, если мое понимание LXC или Docker вообще вводит в заблуждение, пожалуйста, начните с исправления меня!
Предполагая, что я более или менее прав в своем понимании, я спрашиваю:
- Какая связь между Docker и, скажем, виртуальными машинами vmWare или Xen? Докер «сидит поверх» уровня виртуализации? Другими словами, существуют ли «привязки Docker» для разных платформ виртуализации (vmWare, Xen, kvm и т. д.), и я мог бы взять контейнер Docker для
myapp
и развернуть его на любой платформе, поддерживающей Docker? - Какова связь между LXC и Docker? Является ли Docker просто расширением LXC или это вообще похожая (но совершенно отдельная) концепция? Если это расширение LXC, то каким образом?