Назад | Перейти на главную страницу

Запускаете контейнеры внутри виртуальной машины?

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

Моя ситуация такова, что я не могу позволить себе покупать дополнительные серверы, а все серверы, которые у меня есть, работают с гипервизорами. Мне нужно выделить как минимум 6 «серверов» для размещения экземпляров относительно небольшого веб-приложения (каждый экземпляр предназначен для разных клиентов). Было бы расточительно выделять новую виртуальную машину для каждого из этих серверов, поэтому я планирую настроить 2 виртуальные машины и выполнить одно из следующих действий:

  1. Запустите несколько экземпляров приложения на каждой виртуальной машине, используя виртуальные хосты (apache). или
  2. Установите контейнеры на виртуальных машинах, которые позволят мне изолировать среды.

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

Docker ОЧЕНЬ легкий по сравнению с виртуальной машиной, и система виртуальной машины должна нормально работать с контейнерами. Каждый контейнер, по сути, работает как изолированная система, поэтому он очень хорош для изоляции с точки зрения стабильности системы. Судя по вашему описанию, это звучит как идеальный вариант использования Docker. Если вы поэкспериментируете с Docker, убедитесь, что вы используете самую новую из возможных версий, некоторые из старых имеют довольно неприятные уязвимости. При запуске Docker необходимо учитывать некоторые соображения безопасности.

SELinux - SELinux поддерживает контейнер и автоматически создает метку MCS со случайным именем для каждого контейнера. Это помогает обеспечить изоляцию, поскольку контейнеры LXC не считаются действительно "содержащими" сами по себе, хотя ситуация улучшается.

Директива USER - В каждом Dockerfile рекомендуется использовать директиву USER и запускать пользователя под учетной записью, отличной от учетной записи root, которая используется по умолчанию. Уловка здесь в том, что пользователь должен существовать в системе. Это также может расстроить этого нового пользователя, перебирая файлы и каталоги chmodding, но это помогает снизить ваш риск. Я обычно рекомендую вам создать "containeruser" или что-то подобное в ваших системах, чтобы гарантировать, что общий пользователь доступен во всех системах, который не пересекается с какой-либо другой частью системы.

В противном случае самая сложная часть - это управление контейнерами и их обновление при необходимости.

есть ли существенные накладные расходы, связанные с системами контейнеров, которые сделали бы плохой идеей использовать их внутри виртуальной машины?

Делает Производительность Docker-контейнеров в VMware vSphere помочь тебе?

или есть какая-то другая техническая причина, по которой я не хочу использовать контейнеры?

Я не знаю вообще о Docker, потому что еще не работал с ним. Я думаю, что программному обеспечению для управления по-прежнему не хватает зрелости по сравнению с программным обеспечением для управления виртуальными машинами ... но я администратор vSphere и поэтому, вероятно, предвзято.

Учитывая Docker на виртуальных машинах, CoreOS теперь официально поддерживается в vSphere 5.5. По крайней мере, VMware считает, что Docker / контейнеры на виртуальных машинах в порядке.