Что такое контейнер Linux?

by moiseevrus

Контейнер Linux® — это набор из одного или нескольких процессов, изолированных от остальной системы. Все файлы, необходимые для их запуска, предоставляются из отдельного образа, а это означает, что контейнеры Linux являются переносимыми и непротиворечивыми при переходе от разработки к тестированию и, наконец, к производству. Это делает их гораздо более быстрыми в использовании, чем конвейеры разработки, основанные на воспроизведении традиционных сред тестирования. Из-за своей популярности и простоты использования контейнеры также являются важной частью ИТ-безопасности .

Представьте, что вы разрабатываете приложение. Вы выполняете свою работу на ноутбуке, и ваша среда имеет определенную конфигурацию. У других разработчиков могут быть немного другие конфигурации. Разрабатываемое вами приложение опирается на эту конфигурацию и зависит от конкретных библиотек, зависимостей и файлов. Между тем, у вашего бизнеса есть среды разработки и производства, которые стандартизированы со своими собственными конфигурациями и собственными наборами вспомогательных файлов. Вы хотите как можно больше эмулировать эти среды локально, но без всех накладных расходов на воссоздание серверных сред. Итак, как же заставить ваше приложение работать в этих средах, пройти проверку качества и развернуть приложение без головной боли, переписывания и устранения сбоев? Ответ: контейнеры.

Что такое контейнер

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

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

Red Hat® OpenShift® включает в себя все необходимое для разработки и развертывания гибридного облака, корпоративного контейнера и Kubernetes.

Не совсем. Думайте о них больше как о дополняющих друг друга. Вот простой способ подумать о 2:

  • Виртуализация позволяет вашим операционным системам (Windows или Linux ) работать одновременно на одной аппаратной системе.
  • Контейнеры используют одно и то же ядро ​​операционной системы и изолируют процессы приложений от остальной системы. Например: системы ARM Linux работают с контейнерами ARM Linux, системы x86 Linux работают с контейнерами x86 Linux, системы x86 Windows работают с контейнерами x86 Windows. Контейнеры Linux чрезвычайно переносимы, но они должны быть совместимы с базовой системой.
виртуализация против контейнеров

Что это значит? Во-первых, виртуализация использует гипервизор для эмуляции оборудования, что позволяет нескольким операционным системам работать одновременно. Это не так просто, как использование контейнеров. Когда у вас есть ограниченные ресурсы с ограниченными возможностями, вам нужны легкие приложения, которые можно плотно развернуть. Контейнеры Linux изначально запускаются в операционной системе, разделяя ее между всеми вашими контейнерами, поэтому ваши приложения и службы остаются легкими и быстро работают параллельно.

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

Существуют даже инструменты, сочетающие оркестрацию контейнеров и управление виртуальными машинами. Узнайте больше об этом в этом треке Red Hat Summit 2020 , который включает секционную сессию именно по такому инструменту.

Проект Linux Containers (LXC) — это контейнерная платформа с открытым исходным кодом, которая предоставляет набор инструментов, шаблонов, библиотек и языковых привязок. LXC имеет простой интерфейс командной строки, который упрощает работу пользователя при запуске контейнеров.

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

Идея того, что мы сейчас называем контейнерной технологией, впервые появилась в 2000 году как FreeBSD jails — технология, позволяющая разделить систему FreeBSD на несколько подсистем или тюрем. Тюрьмы были разработаны как безопасная среда, которую системный администратор мог использовать совместно с несколькими пользователями внутри или за пределами организации.

В 2001 году реализация изолированной среды появилась в Linux благодаря проекту VServer Жака Желинаса. Как только эта основа была заложена для нескольких контролируемых пользовательских пространств в Linux, части начали складываться, чтобы сформировать то, что сегодня является контейнером Linux.

Очень быстро все больше технологий объединились, чтобы воплотить этот изолированный подход в жизнь. Группы управления ( cgroups ) — это функция ядра, которая контролирует и ограничивает использование ресурсов для процесса или групп процессов. И systemd , система инициализации, которая настраивает пространство пользователя и управляет их процессами, используется контрольными группами для обеспечения большего контроля над этими изолированными процессами. Обе эти технологии, добавляя общий контроль для Linux, были основой того, как среды могут успешно оставаться разделенными.

Введите Докер

В 2008 году на сцену вышел Docker ( через dotCloud ) со своей одноименной контейнерной технологией. Технология докеров добавила множество новых концепций и инструментов — простой интерфейс командной строки для запуска и создания новых многоуровневых образов, демон сервера, библиотеку готовых образов контейнеров и концепцию сервера реестра. В совокупности эти технологии позволили пользователям быстро создавать новые многоуровневые контейнеры и легко делиться ими с другими.

Существует 3 основных стандарта для обеспечения совместимости контейнерных технологий — спецификации образа OCI , распределения и среды выполнения . В совокупности эти спецификации позволяют проектам сообщества, коммерческим продуктам и облачным провайдерам создавать совместимые контейнерные технологии (подумайте о том, чтобы отправить созданные вами образы на сервер реестра облачного провайдера — вам это нужно для работы). Сегодня Red Hat и Docker, среди многих других, являются членами инициативы Open Container Initiative (OCI), которая обеспечивает открытую отраслевую стандартизацию контейнерных технологий.

Контейнеры популярны, но насколько они безопасны? Безопасность контейнера состоит из множества движущихся частей: вам необходимо защитить конвейер контейнера и приложение; среда (среды) развертывания и инфраструктура, и вам нужен план интеграции с инструментами и политиками безопасности предприятия. Вам нужен план. Мы можем помочь.

You may also like

Leave a Comment