Docker и другие контейнеры: в каких сферах новые технологии приносят больше пользы?

Просмотров: 1708
Автор:
Емельянов Павел

Емельянов Павел

архитектор — Virtuozzo

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

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

«Три кита» виртуализации

На сегодняшний день можно выделить три типа виртуальных сред – это собственно классическая виртуализация, которая использует гипервизор в качестве основы для запуска полноценных виртуальных машин, это контейнеры приложений (в основном Docker), которые могут работать на одном и том же сервере или даже внутри виртуальной машины (им все равно где запускаться) и так называемые легкие виртуальные машины (или контейнеры ОС), которые используют одно и то же ядро операционной системы, установленной на сервере, и поэтому позволяют не дублировать ресурсы, запуская множество рабочих окружений на одном и том же «железе».

Поскольку с виртуализацией в классическом ее понимании все прекрасно знакомы, сегодня имеет смысл разговаривать о сходствах и отличиях контейнеров приложений и контейнеров ОС – то есть легких ВМ. Контейнеры приложений, такие как Docker или Kubernotes, отвечают за доставку приложений со всеми необходимыми компонентами. Но они вовсе не предназначены для управления инфраструктурой – их безопасность обеспечивается на уровне технологии NameSpaces и не всегда оказывается достаточной для запуска ответственных нагрузок. Таким образом, контейнеры Docker или им подобные удобно использовать для дистрибуции приложений в уже готовых, защищенных средах. 

Легкие виртуальные машины используют единое ядро ОС, но при этом запускают отдельные версии окружений для каждого пользователя или каждой задачи. Поддерживаемое на уровне ядра разнесение процессов по группам (например, разделение сетевого стека) позволяет избежать снижения производительности, а функции кеширования помогают увеличить плотность размещения легких ВМ на одном хосте. Например, в Virtuozzo этот показатель достигает порядка 80% при включении кэша. 

Проблемы безопасности

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

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

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

Сами же легкие виртуальные машины становятся все более защищёнными за счет активной работы сообщества и отдельных компаний. Так, наша собственная версия Virtuozzo Linux поддерживает технологию ReadyKernel, которая позволяет устанавливать обновления безопасности без остановки сервисов – прямо на лету, благодаря чему весь стек зависимых от хоста легких ВМ поддерживает максимальный уровень защиты. Также для легких виртуальных машин OpenVZ поддерживается дополнительный мониторинг безопасности и встроенная система резервного копирования с аварийным восстановлением, что делает их значительно более безопасными и устойчивыми. 

Контейнер как один из вариантов

Контейнеры как способ размещения отдельных приложений или облегченных версий ОС продолжают становиться все надежнее и безопаснее, причем как в коммерческих версиях, так и на открытых платформах. Однако контейнеры хорошо подходят не для всех задач: они помогают запускать множество копий приложений и однотипных сред и могут прекрасно дополнить традиционные виртуальные машины, используемые для работы самых ответственных нагрузок. Мы в Virtuozzo уверены в том, что будущее средств виртуализации – за гетерогенными средами, где можно запускать как обычные виртуальные машины, так и легкие ВМ (контейнеры ОС), либо контейнеры приложений (например, Docker), с максимальной эффективностью и безопасностью. 

Комментарии (0)

Комментировать могут только авторизованные пользователи.
Предлагаем Вам в систему или зарегистрироваться.