Серверные контейнеры: следующее поколение виртуализации

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

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

Серверные контейнеры не являются чем-то новым, но сегодня эта технология получила широкое распространение благодаря проектам с открытым исходным кодом, таким как Docker и CoreOS’s rkt.

Что такое серверные контейнеры?

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

Программные контейнеры в принципе можно рассматривать как серверные приложения. Чтобы установить приложение, контейнер загружается в переносимый формат (или образ) со всеми необходимыми файлами, который затем загружается на компьютер и запускается в виртуальной среде. Контейнеры приложений можно реализовать практически на любой операционной системе. В то время как системы Windows используют Virtuozzo (программное обеспечение, разработанное компанией Parallels), FreeBSD использует среду виртуализации Jails, а системы Linux поддерживают контейнеры OpenVZ и LXC. Виртуализация операционных систем стала привлекательной для массового рынка только благодаря контейнерным платформам, таким как Docker или rkt, которые добавляют базовые функции, упрощающие работу с серверными контейнерами.

Побочная заметка: Docker и возвращение контейнерной технологии

Пользователи, имеющие дело с виртуализацией на основе контейнеров, неизбежно в какой-то момент столкнутся с Docker. Благодаря выдающемуся маркетингу проект с открытым исходным кодом быстро стал синонимом контейнерной технологии. Инструмент командной строки Docker используется для запуска, остановки и управления контейнерами. Он основан на технологиях Linux, таких как Cgroups и Namespaces для разделения ресурсов отдельных контейнеров. Первоначально использовался интерфейс LXC ядра Linux; в настоящее время, однако, контейнеры Docker используют самостоятельно разработанный интерфейс программирования под названием Libcontainer.

Одной из главных особенностей платформы Docker является Docker Hub, онлайн-сервис, содержащий репозиторий для образов Docker, чтобы созданные самостоятельно образы могли легко передаваться другим пользователям. Для пользователей Linux установка предварительно созданного серверного контейнера так же проста, как посещение магазина приложений. Приложения можно загрузить с помощью простых инструкций командной строки из центрального хаба Docker и запустить на собственной системе.

Крупнейшим конкурентом Docker на рынке контейнерных решений является rkt, который поддерживает образы Docker, а также собственный формат — образы контейнеров приложений (ACI).

Характеристики виртуализации на основе контейнеров

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

  • Более простой процесс установки: программные контейнеры запускаются из образов. Имеются в виду переносимые образы контейнера, которые состоят из одной серверной программы и всех необходимых компонентов, таких как библиотеки, вспомогательные программы и файлы конфигурации. Таким образом, различия между различными дистрибутивами операционных систем могут быть компенсированы, что позволяет упростить процесс установки с помощью всего одной команды командной строки.
  • Независимость от платформы: образы могут быть легко перенесены с одной системы на другую и характеризуются высоким уровнем независимости от платформы. Чтобы запустить программный контейнер из образа, достаточно иметь операционную систему с соответствующей платформой контейнера.
  • Минимальные накладные расходы на виртуализацию: Linux с Docker состоит примерно из 100 мегабайт и может быть установлен за несколько минут. Но не только его компактный размер является привлекательной стороной для системных администраторов; контейнерное решение позволяет свести накладные расходы на виртуализацию к минимуму. Это контрастирует со значительным снижением производительности при аппаратной виртуализации, вызванным наличием гипервизора и дополнительных операционных систем. Кроме того, загрузка виртуальных машин может занимать несколько минут, в то время как контейнерные приложения для серверов всегда доступны сразу.
  • Изолированные приложения: каждая программа в серверном контейнере запускается независимо от других программных контейнеров в ОС. Это позволяет даже приложениям с противоречивыми требованиями с легкостью работать параллельно на одной системе.
  • Стандартизированное администрирование и автоматизация: поскольку управление всеми серверными контейнерами происходит на одной контейнерной платформе (т.е. Docker) с помощью одних и тех же инструментов, приложения в центре обработки данных могут быть в значительной степени автоматизированы. Поэтому контейнерные решения особенно подходят для серверных структур, в которых отдельные компоненты распределены по нескольким серверам, так что нагрузка приходится на несколько машин. Для таких областей применения Docker предоставляет инструменты для настройки автоматизации, которые позволяют запускать новые экземпляры в пиковые нагрузки. Google также предлагает программное решение для оркестровки больших контейнерных кластеров — специально разработанное для Docker программное обеспечение под названием Kubernetes.

Насколько безопасны контейнерные решения?

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

Оцените статью
cdelat.ru
Добавить комментарий