Что такое контейнерная технология? | Сравнение

Что такое контейнерная технология? | Сравнение

Контейнерная технология, также известная как просто контейнерная технология, представляет собой метод упаковки приложения таким образом, чтобы оно могло работать со своими зависимостями изолированно от других процессов. Крупнейшие поставщики общедоступных облачных вычислений, включая Amazon Web Services, Microsoft Azure и Google Cloud Platform, внедрили контейнерную технологию с контейнерным программным обеспечением, названия которого включают популярные варианты от Docker, Apache Mesos, rkt (произносится как «ракета») и Kubernetes. Контейнерная технология получила свое название от судоходной отрасли. Вместо того, чтобы предлагать уникальный способ доставки каждого продукта, продукты помещаются в стальные транспортные контейнеры, которые уже предназначены для подъема краном на причале и вставляются в контейнер, соответствующий стандартному размеру контейнера. Короче говоря, стандартизировав процесс и удерживая элементы вместе, контейнер можно перемещать как единое целое, и это обходится дешевле. С технологией компьютерных контейнеров ситуация аналогичная. Бывали ли у вас когда-нибудь ситуации, когда программа прекрасно работает на одной машине, но затем превращается в неловкую путаницу, когда вы переходите к следующей? Это может произойти при переносе программного обеспечения с ПК разработчика на тестовый сервер или с физического сервера в корпоративном центре обработки данных на облачный сервер. Проблемы возникают при перемещении программного обеспечения из-за различий между машинными средами, такими как установленная операционная система, библиотеки SSL, хранилище, безопасность и топология сети. Точно так же, как кран поднимает весь контейнер как единое целое и помещает его на корабль или грузовик для транспортировки, облегчая передвижение, компьютерная контейнерная технология достигает того же. Контейнерная технология содержит не только программное обеспечение, но и зависимости, включая библиотеки, двоичные файлы и файлы конфигурации, все вместе, и переносятся как единое целое, избегая различий между машинами, включая различия в операционной системе и базовом оборудовании, которые вызывают несовместимость и сбои. . Контейнеры также упрощают развертывание программного обеспечения на сервере.

Виртуальные машины

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

Как работают контейнеры?

Контейнеры настроены для работы в многоконтейнерной архитектуре, называемой кластером контейнеров. В группе контейнеров Kubernetes есть один мастер кластера, а другие связанные контейнеры обозначены как узлы и представляют собой несколько рабочих машин. Роль мастера кластера — планировать рабочие нагрузки для узлов, а также управлять их жизненным циклом и обновлениями. Контейнерная технология не является новым явлением и уже давно является важной особенностью Linux. Достижения в области контейнерных технологий в последние годы стали проще в использовании, и разработчики программного обеспечения воспользовались ими из-за их простоты и во избежание проблем совместимости. Они также позволяют разбивать программу на небольшие фрагменты, называемые микросервисами. Преимущество использования программы в виде микросервисов-компонентов заключается в том, что разные команды могут работать над каждым из контейнеров отдельно, пока сохраняется взаимодействие между различными контейнерами, что способствует более быстрой разработке программного обеспечения. Наконец, контейнерная технология позволяет осуществлять полный детальный контроль над контейнерами. Хотя в контейнерах можно запускать все типы программного обеспечения, устаревшие программы, предназначенные для запуска на виртуальной машине, плохо переносятся на контейнерную технологию. Это старое программное обеспечение, работающее на виртуальной машине, можно установить на облачную платформу, такую ​​как Microsoft Azure, поэтому контейнеры вряд ли полностью заменят виртуальные машины в обозримом будущем.

Как компании управляют контейнерами?

Поскольку так много программ работают как контейнеры, управление контейнерами стало требованием, и трудно сузить невозможность выполнения этой задачи вручную. Требуется специализированное программное обеспечение для управления контейнерами, а популярным решением с открытым исходным кодом является Kubernetes, который имеет несколько дистрибутивов, включая Red Hat OpenShift. Программное обеспечение для управления контейнерами упрощает развертывание контейнеров и хорошо сочетается со стратегиями быстрого развертывания философии DevOps. Еще одной замечательной особенностью контейнерной технологии является ее гибкость. Запуск виртуальной машины занимает несколько минут, точно так же, как компьютер на вашем рабочем столе запускается в начале дня. Напротив, при использовании контейнерной технологии, поскольку на сервере уже работает операционная система, контейнер можно запустить за считанные секунды. Это позволяет запускать и останавливать контейнеры по мере необходимости, гибко изменять их в моменты повышенного спроса и выполнять гибкую настройку, когда в этом нет необходимости. Кроме того, если контейнер выйдет из строя, его можно быстро перезапустить, чтобы возобновить выполнение задачи. Этот тип управления называется оркестровкой контейнеров, и такое программное обеспечение, как Docker Swarm, может контролировать этот тип оркестрации и распределять задачи по группам контейнеров. Поскольку несколько контейнеров используют одну и ту же операционную систему, существуют опасения, что контейнерная технология менее безопасна, чем виртуальная машина. Это связано с тем, что если в ядре хоста есть уязвимость безопасности, это затронет несколько контейнеров. Были предприняты усилия по повышению безопасности контейнеров. Один из подходов предполагает, что Docker требует наличия инфраструктуры подписи для предотвращения несанкционированного запуска контейнеров. Существует также программное обеспечение для обеспечения безопасности контейнеров, такое как Twistlock, которое описывает поведение контейнера, а затем останавливает контейнер, который не является частью ожидаемого профиля.