Насколько я понимаю, контейнеры намного легче, чем виртуальные машины, потому что они не виртуализируют оборудование, а вместо этого просто изолируют программное обеспечение, работающее в них, от программного обеспечения, работающего в других контейнерах в системе.
Моя ситуация такова, что я не могу позволить себе покупать дополнительные серверы, а все серверы, которые у меня есть, работают с гипервизорами. Мне нужно выделить как минимум 6 «серверов» для размещения экземпляров относительно небольшого веб-приложения (каждый экземпляр предназначен для разных клиентов). Было бы расточительно выделять новую виртуальную машину для каждого из этих серверов, поэтому я планирую настроить 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 / контейнеры на виртуальных машинах в порядке.