Пропустить навигацию

Что представляет собой контейнер?

Стандартизированная переносимая упаковка для приложений

Описание контейнеров

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

Стандартный пакет программного обеспечения, известный как контейнер, объединяет код приложения с соответствующими файлами конфигурации, библиотеками и зависимостями, необходимыми для запуска приложения. Это позволяет разработчикам и ИТ-специалистам без проблем развертывать приложения в разных средах.

Для чего нужны контейнеры

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

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

Таким образом, контейнеры позволяют разработчикам и ИТ-специалистам развертывать приложения в разных средах с минимальными изменениями или вообще без них.

Узнайте больше о развитии и преимуществах контейнеров.

См. короткое видео

Контейнер и виртуальная машина

Виртуализация часто ассоциируется у пользователей с виртуальными машинами. На самом деле виртуализация может принимать множество форм, и контейнеры — одна из них. В чем же разница между виртуальными машинами и контейнерами?

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

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

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

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

Хотя контейнеры можно переносить, они ограничены операционной системой, для которой предназначены. Например, контейнер для Linux не может работать в Windows и наоборот.

Преимущества контейнеров

Динамичность

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

Переносимость

Контейнеры предоставляют стандартизированный формат для упаковки и хранения всех компонентов, необходимых для запуска нужного приложения. Это позволяет решить распространенную проблему, условно называемую “у меня на компьютере это работает”, а также обеспечивает переносимость между платформами ОС и облаками. Каждый раз, когда контейнер развертывается в каком-либо расположении, он выполняется в согласованной среде, которая остается неизменной от одного развертывания к другому. Теперь у вас есть единый формат, и его можно использовать на всех этапах — от пространства для разработки до запуска в производство.

Быстрое масштабирование

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

Примеры использования

Собственные облачные приложения

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

Методика lift-and-shift

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

Пакетная служба

Пакетная обработка относится к действиям, которые могут выполняться без вмешательства человека или на основе доступности ресурсов. Примеры: создание отчетов, изменение размера изображений и преобразование файлов из одного формата в другой. Контейнеры предоставляют простой способ запуска задач пакетной службы без необходимости управлять средой и зависимостями. Динамические варианты вычислений, например с помощью службы "Экземпляры контейнеров Azure" (ACI), можно использовать для эффективного приема исходных данных, их обработки и помещения в надежное хранилище, такое как Хранилище BLOB-объектов Azure. Используя такой подход вместо статически выделяемых виртуальных машин, можно достичь существенной экономии средств при посекундной тарификации.

Машинное обучение

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

Не только контейнеры

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

Оркестрация

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

Безопасность

В контейнерах применяется многоуровневый подход — от образа контейнера до изоляции кластера. Настройку этих ограничений лучше всего выполнять с помощью конвейеров CI/CD.

Бессерверные контейнеры

Для дополнительной гибкости можно использовать контейнеры по запросу. Используйте бессерверные контейнерные технологии для простого запуска контейнеров без управления серверами и ускорьте работу с кластерами Kubernetes при пиках трафика.

DevOps

Контейнеры позволяют разработчикам совместно использовать программное обеспечение и зависимости в ИТ-средах и рабочих средах. Применяя их в сочетании с методиками DevOps, вы сможете передавать код быстрее и сократить циклы разработки программного обеспечения.

Все готово к работе в любой момент. Попробуйте контейнеры и Kubernetes в Azure совершенно бесплатно