Связь Docker с виртуальными машинами и LXC

Мое понимание контейнеров Linux (LXC) заключается в том, что они предоставляют встроенный гипервизор для систем Linux, аналогичный Hyper-V Windows, представленному в Windows 8. Под «родным гипервизором» я подразумеваю возможность систему Linux для размещения гостевых виртуальных машин внутри нее без необходимости установки какого-либо специализированного программного обеспечения для виртуализации.

Мое понимание Docker заключается в том, что он каким-то образом строится поверх LXC и позволяет разработчикам приложений определять:

  1. Точный стек приложений виртуальной машины/узла, включая ОС, точную конфигурацию и настройку ОС, а также любые инструменты или приложения, установленные/настроенные/развернутые в этой ОС; и
  2. Точные требования к ресурсам для запуска этой виртуальной машины/узла, включая требования к ЦП, требования к памяти/диску/сети, требования к балансировке нагрузки и репликации и т. д. Затем Docker определяет, на каких узлах запускать контейнер, используя эти объявленные требования в качестве базового уровня.

Итак, во-первых, если мое понимание LXC или Docker вообще вводит в заблуждение, пожалуйста, начните с исправления меня!

Предполагая, что я более или менее прав в своем понимании, я спрашиваю:

  • Какая связь между Docker и, скажем, виртуальными машинами vmWare или Xen? Докер «сидит поверх» уровня виртуализации? Другими словами, существуют ли «привязки Docker» для разных платформ виртуализации (vmWare, Xen, kvm и т. д.), и я мог бы взять контейнер Docker для myapp и развернуть его на любой платформе, поддерживающей Docker?
  • Какова связь между LXC и Docker? Является ли Docker просто расширением LXC или это вообще похожая (но совершенно отдельная) концепция? Если это расширение LXC, то каким образом?

person smeeb    schedule 19.01.2015    source источник


Ответы (1)


отношения между LXC и Docker, -> docker начал использовать LXC, но, начиная с версии 0.9, docker использует libcontainer и больше не использует lxc-start для запуска контейнеров. По сравнению с LXC, docker предлагает REST API, позволяет перемещать образы из реестра и в него, позволяет выполнять сборку с использованием файлов Docker...

person user2915097    schedule 19.01.2015
comment
Спасибо @ user2915097 (+1). А как насчет моего первого вопроса (отношение Docker к платформам виртуализации, таким как vmWare или Xen)? Кроме того, на вопрос, на который вы ответили, можете ли вы уточнить, что такое реестр Docker? Меня также смущают отношения между libcontainer и lxc-start — это конкурирующие библиотеки? Еще раз спасибо! - person smeeb; 19.01.2015
comment
docker не имеет отношения к VMWare или Xen, это другая концепция, у вас есть минимум для запуска процесса, изоляция файловой системы (каждый контейнер имеет свою корневую файловую систему), изоляция процесса, изоляция сети (отдельный виртуальный интерфейс и IP-адрес ), изоляция ресурсов, специальное ведение журнала (доступны STDIN, STDOUT и STDERR), - person user2915097; 19.01.2015
comment
Также контейнер имеет по умолчанию 10 ГБ дискового пространства, которое можно изменить, см. jpetazzo.github.io/2014/01/29/docker-device-mapper-resize, а docker run позволяет указать долю ЦП и памяти, выделяемую контейнеру, см. docs.docker.com/reference/run/ и этот отличный пост goldmann.pl/blog/2014/ 11 сентября/управление ресурсами в докере - person user2915097; 19.01.2015
comment
Также взгляните на этот бенчмарк, сравнивающий Docker и KVM, от парня из IBM, bodenr.blogspot.fr/2014/05/ - person user2915097; 19.01.2015
comment
Еще раз спасибо @user2915097 (+3 за всех) - значит, Docker — это то, что я бы установил на существующую виртуальную машину/узел (мы используем vSphere), или он каким-то образом интегрируется скажем, с vSphere, а потом абстрагироваться от необходимости заботиться о конкретных ВМ? - person smeeb; 19.01.2015
comment
Docker (на данный момент) является проектом, зависящим от Linux (cgroups, namespaces...), поэтому, если вы используете Linux, вы просто sudo apt-get install docker.io, а если вы работаете в Windows, у вас есть boot2docker, который устанавливает Virtualbox, чтобы у вас была виртуальная машина Linux. Microsoft объявила, что в будущую версию Windows будет интегрирован докер, см. azure.microsoft.com/blog/2014/10/15/, и Microsoft недавно анонсировала Docker cli для Windows azure.microsoft.com/blog/2014/11/18/ - person user2915097; 19.01.2015
comment
Вы спрашивали о реестре докеров. Если вы перейдете на registry.hub.docker.com, вы увидите множество докеризированных приложений, таких как веб-сервер (nginx), база данных (Redis, MongoDB, PostgreSQL...). Это официальный реестр, но вы можете запустить свой собственный, см. этот пост digitalocean.com/community/tutorials/ - person user2915097; 19.01.2015
comment
Docker, насколько мне известно, не интегрируется с Vsphere, но вы можете установить его на виртуальную машину без снижения производительности или с очень небольшим снижением производительности, см. этот пост blogs.vmware.com/performance/2014/10/ и обратите внимание на очень небольшую разницу докер и виртуальный докер - person user2915097; 19.01.2015
comment
Вы должны установить Docker на узел Linux и немного поиграть с ним, например, запустить веб-сервер Nginx с базовым docker pull nginx , посмотреть связанный файл Docker github.com/nginxinc/docker-nginx/blob/, подключитесь к веб-серверу на портах 80 и 443, измените Dockerfile, строить заново... - person user2915097; 19.01.2015
comment
docker — это просто простой способ изолировать процесс, я читал интервью парня из docker.io, где он объясняет, что в 2008 году можно было сделать то же самое, что мы делаем сегодня с докером, но для этого требовался опытный и мотивированный системный администратор. Ничего нового, Docker просто упростил и автоматизировал весь процесс. - person user2915097; 19.01.2015