LXC: особенности, плюсы и минусы Linux-контейнеров

Благодаря удобству использования, Linux Containers очень популярны и сегодня стали важным компонентом ИТ-безопасности. Одноименная контейнерная платформа LXC (Linux Containers) используется для одновременной изоляции нескольких процессов друг от друга и от остальной системы. Затем с помощью виртуализации создается образ, который позволяет каждому контейнеру быть постоянно переносимым и согласованным от создания до этапа тестирования и вплоть до эксплуатации. Таким образом, отдельные приложения имеют виртуальное окружение, но при этом коллективно используют ядро основной системы.

Что дает LXC (Linux Containers)? Всегда ли простота является преимуществом? И сколько виртуальных машин в контейнере Linux?

Что такое LXC (Linux Containers)?

Термин Linux Containers (LXC) относится как к виртуализированным приложениям в ядре Linux, так и к лежащей в основе контейнерной платформе и технологии. Это следует иметь в виду при обсуждении альтернативных контейнерных платформ, которые также используют Linux Containers в качестве базовой технологии.

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

Совет

Контейнеры — это уникальные инструменты, которые помогают управлять и разрабатывать приложения таким образом, который ранее был немыслим. Они позволяют изолировать приложения от системы, не изолируя их полностью. Они также могут обмениваться информацией и общаться с внешним миром. Их появление ознаменовало настоящую революцию, и сейчас технология контейнеров переживает бум, а на рынке конкурирует бесчисленное множество поставщиков услуг. Крупнейшими поставщиками контейнерных услуг являются Amazon, Microsoft и Google. Самой популярной платформой является Docker, дальнейшее развитие проекта Linux Containers (LXC), который поддерживается всеми поставщиками CaaS.

Идея технологии Linux Containers возникла в 2001 году. Первоначально в рамках проекта VServer была реализована изолированная среда. Это послужило основой для создания нескольких контролируемых пространств имен в Linux и для того, что сейчас называется Linux Containers. Затем последовали другие технологии, такие как cgroups (группы управления), которые могли контролировать и ограничивать использование ресурсов для процесса или целой группы процессов. После этого появилась systemd, система инициализации для управления пространствами имен и их процессами.

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

Примечание

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

Каковы цели и особенности LXC?

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

Примечание

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

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

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

Текущая платформа Linux Containers использует следующие возможности ядра, чтобы «заключить» приложения и процессы в контейнеры:

  • Пространства имен ядра (ipc, uts, mount, pid, network и user).
  • AppArmor и SELinux-Profile
  • Политики Seccomp
  • Корни (с использованием pivot_root)
  • Возможности ядра
  • cgroups (группы управления)

Контейнеры Linux предназначены для компактного использования. Поэтому они состоят всего из нескольких отдельных компонентов:

  • библиотека liblxc
  • несколько языковых привязок API:
    • python3 (долгосрочная поддержка в версии 2.0.x)
    • lua (долгосрочная поддержка в версии 2.0.x)
    • Go
    • Ruby
    • Python
    • Haskell
  • набор стандартных инструментов для управления контейнерами
  • шаблоны дистрибутивов

Как работает LXC?

Изоляция и виртуализация важны, поскольку они помогают максимально эффективно управлять ресурсами и аспектами безопасности. Например, они облегчают мониторинг ошибок в системе, которые часто не имеют никакого отношения к недавно разработанным приложениям. Но как работает LXC? Или, говоря иначе: как работают Linux-контейнеры?

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

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

Примечание

В Linux все является файлом. Поэтому каждая cgroup в конечном итоге является набором файлов (/sys/fs/cgroup). Существуют различные инструменты для управления этими типами файлов, например, CGManager.

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

Обзор плюсов и минусов Linux-контейнеров

Удобство использования Linux Containers является его самым большим преимуществом по сравнению с классическими методами виртуализации. Однако невероятное распространение LXC, практически всеохватывающей экосистемы наряду с инновационными инструментами, в основном можно отнести на счет платформы Docker, которая привела к появлению Linux Containers. По сравнению с другими контейнерными системами, такими как rkt, OpenVZ и Cloud Foundry Garden, которые значительно более ограничены в использовании, LXC выигрывает от тесной связи с предшественником контейнерных платформ.

Системный администратор, который уже работал с методом виртуализации на базе гипервизора, например Hyper-V, не будет испытывать проблем с использованием LXC. Вся настройка, включая создание шаблонов контейнеров и их развертывание, конфигурирование операционной системы и установление соединений, а также развертывание приложений, остается прежней. Все скрипты и рабочие процессы, написанные для виртуальных машин, могут быть использованы и для Linux-контейнеров. Таким образом, разработчики не получают новых, специализированных решений или инструментов, а могут спокойно продолжать работать в знакомой среде со своими собственными сценариями и рабочими процессами автоматизации.

Одно из главных преимуществ LXC становится очевидным, когда речь заходит об управлении памятью: Несмотря на то, что поддерживаются различные бэкенды памяти (Ivm, overlayfs, zfs и btrfs), по умолчанию все сохраняется в rootfs. Нет возможности регистрировать образы. В этом отношении другие контейнерные платформы предлагают более умные и гибкие решения, как для сохранения контейнеров, так и для управления образами.

Когда используется LXC?

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

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

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

Каковы альтернативы Linux Containers?

Наиболее популярной альтернативой LXC является Docker. Эта платформа, основанная на Linux Containers, постоянно развивалась в течение последних нескольких лет и теперь может работать и на системах Windows. Поэтому крупнейшие облачные провайдеры, такие как Google, IBM, AWS и Azure, теперь могут предложить встроенную поддержку Docker.

Известной альтернативой контейнерам (Linux) для виртуализации полноценного сервера является OpenVZ. Как и LXC, OpenVZ использует ядро операционной системы хоста и делает виртуальный сервер доступным для пользователей в изолированной среде.

KVM — это технология виртуализации с открытым исходным кодом, которая уже встроена в Linux. KVM расшифровывается как «Виртуальная машина на базе ядра». Она может быть использована для преобразования Linux в гипервизор, позволяя хост-компьютеру запускать несколько изолированных сред.

Kubernetes изначально был разработан компанией Google, которая была одной из первых сторонниц технологии Linux Containers. Эта платформа с открытым исходным кодом автоматизирует деятельность Linux Containers. Целые группы хостов, на которых запущены контейнеры, собираются в кластеры, что значительно упрощает управление ими.

Примечание

При работе с LXC невозможно обойти стороной тесно связанный с ним LXD. Эти два термина и технологии трудно отличить друг от друга. LXD является дальнейшим развитием LXC и также содержит системный демон.

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