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

Чем Unikernels отличаются от контейнеров?

Unikernels - это новая вещь, и мне трудно понять, каковы их варианты использования.

Любой вариант использования, который я могу придумать, уже обслуживается существованием контейнеров Docker.

Итак, для чего предназначены Unikernels?

Контейнеры совместно используют пространство ядра с другими контейнерами на физическом гипервизоре. Как правило, у unikernels нет. Все функциональные различия в основном являются проявлениями этого коренного различия.

Контейнеры имеют большую поверхность для атак в пространстве ядра, например, потому что ядро ​​контейнера является универсальным: любое приложение может работать в любом контейнере правильной ОС. Unikernel настроен так, чтобы содержать только подсистемы, необходимые для работающего приложения - только который приложение может работать в соответствующем юникернеле, поэтому юникерн имеет радикально меньшую поверхность атаки.

Кроме того, у юникернов более прямой доступ к базовому оборудованию - таким образом, они более эффективны, чем контейнеры (в том числе из-за меньшего размера ядра, хотя это во многом зависит от того, сколько контейнеров или юникернов работает на конкретном гипервизоре). Кроме того, unikernels традиционно (это меняется) может работать только один процесс, поэтому разветвление не подходит для приложений, работающих в традиционных unikernels.

Таким образом, уникальные ядра безопаснее и быстрее; но больше индивидуальной подгонки, следовательно, менее общего назначения. Они предназначены для использования в любом рабочем процессе, в котором эффективность и безопасность важнее перепрофилирования и стандартизации ОС.