Контейнеризация: что это такое — контейнерные технологии
Контейнеризация — это технология, которая помогает запускать приложения изолированно от основной операционной системы. Программа упаковывается в специальную оболочку-контейнер, внутри которой — среда, необходимая для работы.
Контейнеры можно создавать, описывать и развертывать, то есть запускать на устройстве, закрывать и удалять, конфигурировать и настраивать, выделять им память и передавать данные от одного к другому. Все это — работа с контейнеризацией. Наиболее популярная реализация технологии — Docker.
Как правило, работа с контейнерами внутри компании — обязанность DevOps-инженера. Это специалист, который настраивает рабочую среду и оптимизирует процессы внутри нее.
О том, кто такой DevOps-инженер, читайте в статье.
Технология нужна:
- для изолированного запуска приложений и рабочих сред вне зависимости от системы и ПО, установленных на конкретной машине;
- контроля ресурсов и снижения нагрузки на систему;
- разрешения конфликтов, которые могут возникнуть из-за того, что разные приложения нуждаются в различных версиях ПО или библиотек;
- быстрого перемещения настроенных приложений и сред с одной машины на другую;
- создания удобной рабочей инфраструктуры;
- ускорения процесса разработки и снижения риска ошибок;
- масштабирования готовых решений;
- легкого управления сложными приложениями, средами и системами.
Ближайшая аналогия для контейнера — ящики с грузом, которые можно поставить где угодно. На их содержимое не влияют условия снаружи. Только внутри контейнера может запуститься и работать приложение. Оно будет исполняться изолированно от основной системы, не взаимодействуя с ней. Контейнер универсален: его можно развернуть в любой ОС независимо от настроек.
Контейнеры создаются на основе образов, похожих на те, которые используются для установки ОС. Но есть отличие: внутри находится не полноценная операционная система, а минималистичная среда с нужными настройками. Образ запускается в приложении для управления контейнерами, и из него разворачивается контейнер.
Внутри контейнера — изолированная среда. В ней могут находиться файлы, библиотеки, установленные приложения со всеми зависимостями и настройками. Даже если настройки и зависимости противоречат имеющимся в основной ОС, ничего страшного. Конфликты не возникнут, так как контейнер изолирует свое содержимое от внешней системы.
Один контейнер не зависит от другого. Если внутри контейнера A что-то сломается, это не повлияет на работу контейнера B. Они могут общаться друг с другом, передавать данные, но будут работать независимо друг от друга.
Контейнер работает на основе операционной системы. Чаще всего это Linux, потому что популярные решения для контейнеризации разработаны для нее. Контейнер берет ресурсы из операционной системы, для изоляции использует ее технологии.
Поэтому контейнер, созданный для запуска в Linux, не будет работать в Windows — там используется другая архитектура.Контейнер — относительно легкая структура. Она занимает столько ресурсов, сколько нужно приложению внутри.
Один экземпляр контейнера — сущность, которая имеет короткий срок жизни. Когда контейнер закрывается, вся информация внутри него стирается. Это похоже на закрытие файла без сохранения. Поэтому при работе с контейнерами важные данные выводят наружу, во внешнюю операционную систему.
А если закрытый контейнер понадобится снова, можно создать другой его экземпляр из того же образа. Так обычно и делают.
Похожее с первого взгляда понятие — виртуализация, создание виртуальной копии другой ОС на том же компьютере. Технологии различаются между собой.
Виртуальная машина (ВМ) — абстракция на уровне физического оборудования, превращает один сервер в несколько.
На каждой ВМ отдельная гостевая ОС работает поверх ОС хоста с виртуализированным доступом к базовому оборудованию.
Виртуальные машины с различными операционными системами могут работать на одном физическом сервере: ВМ UNIX может работать вместе с ВМ Linux и пр. Система виртуализации и микроядро, создающие и запускающие виртуальные машины, называются мониторами ВМ или гипервизорами. Они находятся между оборудованием и ВМ и необходимы для изоляции ОС друг от друга и виртуализации сервера.
Контейнер — абстракция на уровне приложения, объединяет зависимости и код.
Контейнеры устанавливаются на физический сервер и его ОС, например Windows или Linux. Они отделяют содержимое от операционной системы. Контейнеры легче, быстрее разворачиваются, требуют меньше оперативной памяти и мощностей, а также более гибкие. Расход ресурсов меньше, быстродействие выше.
Виртуальные машины запускают любое ядро операционной системы независимо от основной ОС. Контейнер должен быть совместим с ядром операционной системы сервера.
Чем контейнеры отличаются от ВМДля решения задач, требующих глубокой изоляции на уровне ядра, а также ОС, которая отличается от основной, лучше подойдет виртуализация.
Существует практика: одно приложение — один контейнер. Это нужно для более хорошей изоляции, для удобства и безопасности. Так две программы не смогут конфликтовать или мешать работе друг друга. А если ошибка обнаружится в одном приложении, она не заденет другие.
Большие системы, которые состоят из множества элементов, требуют не один, а несколько контейнеров. Они называются многоконтейнерными приложениями. Для управления такими системами нужно специальное ПО. Оно позволяет управлять контейнерами «в связке», а не поодиночке, ускоряет и упрощает работу. Это, например, Docker Compose.
Когда контейнеров десятки или сотни, возможностей ПО вроде Docker Compose не хватает. В этих случаях используются оркестраторы, или системы оркестрации, — программное обеспечение, которое само управляет множественными контейнерами.
С оркестраторами контейнеры не надо настраивать и конфигурировать вручную. ПО контролирует их работоспособность, включает и отключает, выделяет ресурсы и занимается построением сети. Оркестраторы оптимизируют память, могут запустить одну контейнерную систему на нескольких серверах одновременно и автоматизируют управление ею. Такая программа становится посредником, через которого специалист взаимодействует с инфраструктурой.
«Золотой стандарт» среди оркестраторов — платформа Kubernetes.
Контейнеризация дает ряд преимуществ при работе с приложениями и построении инфраструктуры. Поэтому сейчас ее используют практически во всех сегментах IT.
Запуск сред без конфликтов. Без контейнеризации приложения пришлось бы запускать поверх основной ОС. Если в операционной системе одна версия библиотек и программного обеспечения, а приложению нужна другая, возник бы конфликт. В контейнер можно положить все нужные зависимости, включая библиотеки: конфликтов не возникнет.
Контроль ресурсов. Продвинутые системы работы с контейнерами умеют распределять между ними мощности, задавать приоритеты, запускать и останавливать, устанавливать связи. Если грамотно настроить системы, можно оптимизировать потребление мощностей. Даже большие приложения будут потреблять меньше памяти. Также если на отдельные приложения повысится нагрузка, системы управления смогут выделить им больше ресурсов за счет других контейнеров. Производительность останется высокой.
Поддержка безопасности. Один из плюсов изоляции — повышение безопасности и снижение риска утечки. Если приложение внутри контейнера выдаст критическую ошибку, окажется скомпрометировано или начнет вести себя вредоносно, это не нарушит работу других программ. Небезопасный код окажется изолирован от других участков системы.
Создание рабочей инфраструктуры. Для разработки нужна определенная среда. Без контейнеров ее пришлось бы настраивать вручную для каждой задачи и пользователя. Это занимает много времени. А если среды будут различаться для разных людей, это небезопасно. Поэтому одно из применений контейнеров — создание рабочей инфраструктуры, единой для всех разработчиков.
Оптимизация расходов. Контейнеры экономят не только ресурсы компьютеров, но и денежные средства.
- Не нужно использовать «тяжеловесные» решения. Это дешевле.
- Изоляция приложений снижает риск непредвиденной ошибки или фатального сбоя, поэтому помогает избежать лишних расходов.
Подробнее
Что такое контейнеризация | Плюсы технологии
Технология контейнеризации — это ещё одна форма виртуализации ОС, предлагающая изоляцию приложений в пользовательских пространствах (контейнерах). Все контейнеры используют одну и ту же операционную систему. Благодаря технологии контейнеризации можно запускать приложение с нужными библиотеками в типовом контейнере, который соединяется с хостом или другой внешней компонентой при помощи простого интерфейса.
Все компоненты, необходимые для работы приложения (код, среда запуска, системные инструменты, библиотеки и настройки), упаковываются в один образ и могут быть использованы повторно в рамках текущей задачи или для любых других. Контейнер независим от ресурсов и архитектуры хоста. Он создаёт изолированную среду для приложения, не используя CPU, RAM или хранилище хостовой ОС. Все процессы идут внутри.
Виртуальная машина и контейнер: в чём разница
Виртуальные машины (ВМ) и контейнеры отличаются друг от друга. Это два разных подхода к созданию независимых изолированных вычислительных сред на физическом сервере. В чём особенность каждого варианта?
- Виртуальная машина. Требуется гипервизор, для каждой ВМ используется собственная гостевая ОС. Позволяет создавать неоднородные вычислительные среды на одном компьютере. Из-за собственной ОС ВМ может занимать несколько ГБ, а запуск ОС и всех приложений занимает какое-то время.
- Контейнер. Даже несколько контейнеров используют ядро одной хостовой ОС. Позволяет создавать на одном компьютере только однородные вычислительные среды. Намного легче ВМ, размер измеряется в Мб. Способен запускаться почти мгновенно.
Для чего нужны контейнеры
Это удобное решение для тестирования и разработки. Когда разработчик запускает свой или чей-то код в тестовой среде, могут возникать ошибки из-за изменения среды приложения. Топология сети, политики безопасности, вычислительные ресурсы также могут влиять на работу приложения. Контейнер самодостаточен и легко пересоздаётся, если нужно откатить изменения или провести ещё одно тестирование.
Что представляет собой контейнеризация с точки зрения используемых технологий? Для создания контейнеров используются е технологии, как Linux XC, OpenVZ, Linux VServer, BSD Jails и Solaris. Первая популярная технология контейнеризации в Linux — это OpenVZ, превратившаяся позднее в более совершенный коммерческий продукт Virtuozzo.
Плюсы контейнеризации
- Скорость создания. Контейнер можно создать быстрее, чем ВМ. При этом среда контейнеризации для некоторых задач даёт больше возможностей.
- Экономичность. Контейнер занимает меньше места в хранилище, что уменьшает накладные расходы.
- Высокая производительность. Отсутствие межсетевых зависимостей и конфликтов повышает производительность разработки. Каждый контейнер фактически представляет собой микросервис, который можно независимо обновлять, не задаваясь вопросом синхронизации.
- Управление версиями. Можно мониторить версионность контейнеров, следить за различиями между ними.
- Возможность миграции среды вычислений. Все зависимости приложений и ОС, необходимые для работы приложения, инкапсулируются. Это позволяет без труда переносить образ контейнера из одной среды в другую. Так, один образ можно запускать в среде Windows и Linux или dev/test/stage.
- Стандартизация. Как правило, контейнеры создаются на основе открытых стандартов. Поэтому с ними можно работать в большинстве дистрибутивов Linux, Microsoft, MacOS.
- Безопасность. Контейнеры изолированы друг от друга и базовой инфраструктуры. Изменение/обновление/удаление одного контейнера не влияет на другой.
Бесплатный тестовый доступ к облаку на 30 днейПолучить
Недостатки технологии
- Высокая сложность. Рост количества контейнеров, работающих с приложением, влияет на сложность управления ими. В производственной среде для работы с множеством контейнеров стоит использовать оркестраторы. Например, Kubernetes и Mesos.
- Разрастание. Нередко в контейнеры упаковывается гораздо больше ресурсов, чем реально требуется. Из-за этого образ разрастается, занимая больше места на диске.
- Поддержка Native Linux. Docker и многие другие контейнерные технологии основаны на Linux-контейнерах (LXC). Из-за этого запуск контейнеров в Windows-среде не всегда удобен, а ежедневное использование сложнее, чем при работе в Linux.
- Недостаточная зрелость. Технологии контейнеризации приложений появились на рынке сравнительно недавно. Не всегда удаётся сразу решить возникшую проблемы. Иногда требуется время на поиск решения.
Несмотря на то, что контейнеров может быть много, они, как правило, короткоживущие. Docker-контейнеры, например, часто называют одноразовыми. Можно использовать его, получить результат, а затем удалить и запустить точно такой же.
Если вас интересуют вопросы контейнеризации или вы хотите использовать облачный инструмент оркестрации контейнеров Kubernetes, обратитесь к менеджерам Cloud4Y по телефону 8 (499) 877-12-35. Вы можете связаться с нами любым другим способом.
kubernetes as a service cloud server
Что такое контейнерная технология? — Глоссарий ИТ
Ресурсы
Контейнер
Контейнер — это облегченный пакет, который включает в себя код и зависимости.
- Определение контейнерной технологии
- Распространенные типы контейнеров
- Что такое мониторинг контейнеров?
- Контейнер против виртуальной машины
- Что такое контейнеризация?
- Виртуализация против контейнеризации
- Преимущества контейнеризации
- Определение контейнерной технологии
Container Technology Definition
Контейнерная технология — это легкая исполняемая единица программного обеспечения, которая упаковывает код приложения и зависимости, такие как двоичный код, библиотеки и файлы конфигурации, для легкого развертывания в различных вычислительных средах. Ее часто называют виртуализацией операционной системы, поскольку она может запускать программное обеспечение, микросервис или приложение.
- Распространенные типы контейнеров
Распространенные типы контейнеров
Контейнерные технологии значительно расширились за последние несколько лет. Сотни организаций внедрили контейнерную технологию для ускорения разработки и развертывания приложений. Существует множество вариантов контейнеров для организаций; вот некоторые из распространенных типов контейнеров:
- Docker: Популярная платформа с открытым исходным кодом, которая позволяет разработчикам объединять приложения в изолированной среде, называемой контейнером. Docker использует возможности ядра Linux.
- CRI-O: Легкий контейнерный движок с открытым исходным кодом, созданный Red Hat. Это первая реализация CRI (интерфейс выполнения контейнеров) и замена Docker в качестве механизма выполнения для Kubernetes, популярной системы оркестрации контейнеров от Google. Kubernetes может использовать любую среду выполнения, совместимую с OCI (Open Container Initiative), с CRI-O.
- rktlet: Реализация Kubernetes CRI (интерфейса выполнения контейнеров), призванная конкурировать с Docker. Он использует rkt (или «ракету»), разработанный CoreOS, в качестве основной среды выполнения контейнера. Rocket использует подход, ориентированный на безопасность, для устранения определенных уязвимостей в ранних версиях Docker и использует несколько функций серверов Linux.
- Containerd: Демон для Windows и Linux от Cloud Native Computing Foundation. Containerd может управлять всем жизненным циклом контейнерной технологии, начиная с передачи образа и заканчивая выполнением контейнера и далее. Плагин containerd cri позволяет разработчикам использовать его в качестве среды выполнения контейнера для Kubernetes.
- runC: Облегченная среда выполнения контейнера, совместимая с OCI, runC изначально разрабатывалась как часть Docker. Теперь он стал автономным инструментом командной строки, который создает и запускает контейнеры в соответствии со спецификациями OCI.
- Что такое мониторинг контейнеров?
Что такое мониторинг контейнеров?
Мониторинг контейнеров — это процесс анализа производительности контейнерных приложений путем сбора метрик, трассировок и других данных. Он дает представление о том, соответствует ли приложение требуемым целям и обеспечивает оптимальную производительность. Подготовка и удаление контейнера — это быстрый процесс. Эфемерный характер контейнеров затрудняет отслеживание проблем, особенно в крупномасштабных контейнерных средах. Мониторинг контейнеров необходим для обеспечения бесперебойной работы приложения с максимальным временем безотказной работы.
Автоматизированные инструменты мониторинга могут эффективно помочь отслеживать контейнеры с анализом в реальном времени, возможностями оповещения и действиями. Инструменты мониторинга контейнеров анализируют всю инфраструктуру контейнеров, включая хосты, зависимости и развертывания. Эти инструменты также могут предоставлять подробные сведения о ЦП, времени безотказной работы и т. д. для каждого контейнера, чтобы обнаруживать и изолировать источник проблем. Некоторые инструменты имеют интуитивно понятные панели мониторинга, помогающие прогнозировать истощение емкости и позволяющие пользователям эффективно управлять ресурсами.
Подробнее о мониторинге контейнеров Docker
- Контейнер против виртуальной машины
Контейнер и виртуальная машина
Контейнеры и виртуальные машины отличаются друг от друга по нескольким параметрам. Контейнер виртуализирует ядро основной операционной системы (ОС) и развертывает различные приложения в одной операционной системе. Это обеспечивает согласованную среду развертывания приложений на каждом этапе жизненного цикла разработки программного обеспечения (SDLC). Контейнер легковесен и содержит только те зависимости, которые необходимы для запуска приложения в контейнере, что приводит к меньшему потреблению памяти и высокой переносимости. Инструменты управления кластером используются для оркестровки контента, что автоматизирует развертывание контейнеров, управление ими, масштабирование и работу в сети. Популярные инструменты управления кластером включают Kubernetes, Apache Mesos и Docker Swarm.
Напротив, виртуальная машина (или ВМ) эмулирует физическую компьютерную систему с ЦП, памятью, дисками и т. д. ВМ считаются виртуальными компьютерами и могут запускать несколько операционных систем в одной компьютерной системе. Они делают это с помощью гипервизора или монитора виртуальных машин (VMM), который запускает виртуальные машины, используя ресурсы базового физического оборудования. К популярному программному обеспечению для виртуальных машин относятся Azure VM, VMware Workstation Pro и т. д. Виртуальные машины потребляют больше памяти и менее портативны, чем контейнеры. Запуск нескольких виртуальных машин на одном физическом сервере иногда может привести к нестабильной работе. Организации используют инструменты мониторинга виртуальных машин для анализа и поддержания производительности своих виртуальных машин в гибридных, облачных и локальных средах. Эти инструменты отслеживают работоспособность всей виртуальной среды и эффективно решают проблемы, связанные с производительностью.
- Что такое контейнеризация?
Что такое контейнеризация?
Контейнеризация — это процесс виртуализации на уровне ОС, при котором код приложения объединяется со всеми его библиотеками, файлами конфигурации и другими необходимыми зависимостями в исполняемый файл, называемый контейнером. Контейнеризация стала популярной в 2013 году с внедрением движка Docker. Контейнеризация создает и запускает приложения, изолируя контейнеры от основной операционной системы. Подход «сделай один раз, запускай где угодно» упрощает запуск контейнеров в любой среде, на любой платформе или в облаке.
- Виртуализация против контейнеризации
Виртуализация по сравнению с контейнеризацией
Виртуализация включает запуск нескольких операционных систем на уровне, абстрагированном от базового оборудования. Он создает смоделированную вычислительную среду, используя ресурсы одного физического сервера. Контейнеризация позволяет пользователям развертывать несколько приложений в одной операционной системе хоста. Контейнеризация инкапсулирует приложение в контейнер вместе с его зависимостями. Это не требует установки ОС для разных виртуальных машин; он использует хост-ОС.
Виртуализация лучше всего подходит для приложений, требующих полной функциональности ОС, или для тестирования приложений в разных операционных системах. Это приводит к меньшим затратам на оборудование. Организации должны использовать контейнеры, чтобы разместить больше приложений на одном сервере, поскольку они занимают меньше места и оперативной памяти.
- Преимущества контейнеризации
Преимущества контейнеризации
ИТ-организации широко применяют контейнеризацию для эффективного управления и развертывания приложений. Преимущества контейнеризации включают в себя:
- Чрезвычайная портативность: Поскольку контейнер упаковывает все зависимости приложений, разработчики могут легко перемещать приложения в контейнерах между локальными расположениями, облаком и другими средами без проблем, связанных с интеграцией.
- Масштабируемость: Контейнеризация позволяет быстро масштабировать приложения на уровне микрослужб. Разработчики могут быстро масштабировать части контейнерного приложения, не влияя на все приложение.
- Быстрое развертывание: С помощью контейнеров Docker разработчики могут создавать основную версию образа (контейнерное приложение) для беспрепятственного развертывания по требованию.
- Способствует непрерывности бизнеса: Несколько приложений могут быть упакованы в разные контейнеры, поэтому сбой в одном контейнере не повлияет на работу других.
- Безопасность: Контейнеризация обеспечивает полную изоляцию приложений. Это делает его очень безопасным, поскольку каждое приложение может работать независимо в отдельных контейнерах.
- Легкий: Контейнеры невероятно легкие и требуют меньше серверных ресурсов, чем традиционные виртуальные машины.
Представлено в этом ресурсе
Как то, что вы видите? Попробуйте продукты.
Монитор серверов и приложений
Комплексный мониторинг серверов и приложений стал проще
СКАЧАТЬ БЕСПЛАТНУЮ ПРОБНУЮ ПРОБНУЮ ВЕРСИЮ Полная функциональность в течение 30 дней ССЫЛКА НА ПРОБНУЮ ПРОБНУЮ ЭЛЕКТРОННУЮ ПОЧТУ Полная функциональность в течение 30 дней
Менеджер виртуализации
Мониторинг и управление виртуальными машинами, предназначенные для решения проблем с производительностью.
СКАЧАТЬ БЕСПЛАТНУЮ ПРОБНУЮ ПРОБНУЮ ВЕРСИЮ Полная функциональность в течение 30 дней ССЫЛКА НА ПРОБНУЮ ПРОБНУЮ ЭЛЕКТРОННУЮ ПОЧТУ Полная функциональность в течение 30 дней
Мы созданы на основе компьютерных технологий. ®
Разработанный сетевыми и системными инженерами, которые знают, что нужно для управления современными динамичными ИТ-средами, SolarWinds тесно связан с ИТ-сообществом.
Результат? Эффективные, доступные и простые в использовании продукты для управления ИТ.
Законные документы Конфиденциальность Права на конфиденциальность в Калифорнии Информация о безопасности Документация и информация об удалении Центр доверия Политика раскрытия информации
© 2023 SolarWinds Worldwide, LLC. Все права защищены.
30 основных инструментов и ресурсов технологии контейнеров
Контейнеры позволяют заморозить и перезапустить точную копию системы, которую вы планируете развернуть, включая операционную систему и файлы конфигурации. Это упрощает отладку и быстрое тестирование, а также меняет способ развертывания и отката в ИТ-операциях.
Пакеты контейнеров не только полны, но и достаточно малы и эффективны, чтобы загружать и запускать их за считанные секунды. Менеджеры кластеров обеспечивают балансировку нагрузки и масштабирование, чтобы гарантировать безотказную работу даже во время развертывания.
Как только вы решите использовать контейнеры (или расширить их использование на другую область), вы столкнетесь с новой проблемой. Сам рост и расширение технологии контейнеров предоставляет широкий выбор, в том числе, какие стандарты использовать, как хранить старые версии и развертывать новые образы, а также как управлять контейнерами в производственной среде.
Так как же подобрать правильное сочетание продуктов и услуг для эффективного создания, запуска и управления контейнерами? Чтобы ответить на этот вопрос, TechBeacon рассмотрел ряд контейнерных технологий, от архитектуры до управления кластером, хранения, безопасности и даже обучения и поддержки. Вот основные инструменты, которые должна учитывать каждая команда.
Среды выполнения контейнеров
Docker был первым крупным контейнерным предложением с открытым исходным кодом и быстро стал стандартом де-факто. Теперь Kubernetes развивается как новый стандарт для кластеров и управления кластерами.
Изначально Kubernetes поддерживал Docker и rkt (или «ракету») с помощью пользовательского кода. Но теперь, с созданием интерфейса выполнения контейнеров (CRI), у вас есть множество способов хранить виртуальные машины и в то же время взаимодействовать через этот интерфейс.
DockerЯвляясь первой и до сих пор самой популярной контейнерной технологией, механизм контейнеризации Docker с открытым исходным кодом работает с большинством последующих продуктов, а также со многими инструментами с открытым исходным кодом.
Docker EnterpriseЭтот набор расширений не только расширяет возможности Docker, но и позволяет Docker (компании) добавлять коммерческую поддержку. Если вам нужна матрица поддержки, чтобы точно знать, какие версии какого программного обеспечения поддерживаются, и номер телефона, по которому можно позвонить, если что-то пойдет не так, вам может подойти Docker Enterprise.
CRI-OПервая реализация Container Runtime Interface, CRI-O — невероятно легкая эталонная реализация с открытым исходным кодом.
rktletВышеупомянутый rkt, переработанный и переоснащенный для использования CRI в качестве rktlet, теперь имеет набор поддерживаемых инструментов и сообщество, чтобы конкурировать с Docker.
containerdПроект Cloud Native Computing Foundation, containerd был одним из первых форматов контейнеров. Совсем недавно разработчики containerd создали подключаемый модуль CRI, который позволяет Kubernetes запускать containerd так же, как он запускает rktlet или CRI-O.
Контейнеры MicrosoftКонтейнеры Microsoft, позиционируемые как альтернатива Linux, могут поддерживать контейнеры Windows при очень специфических обстоятельствах. Обычно они работают на настоящей виртуальной машине, а не в диспетчере кластеров, таком как Kubernetes.
Управление кластером и развертываниеПосле того, как команда сможет создавать образы и передавать их при разработке, наступает трудная часть: запуск и поддержка контейнеров в рабочей среде. Это означает регистрацию артефактов, развертывание их в рабочей среде как системы и управление серверами и коллекциями серверов. Последний включает набор серверов в облаке, известный как «кластер».
Инструменты управления кластером управляют рабочими нагрузками, включая перемещение экземпляров с одного виртуального хоста на другой в зависимости от нагрузки, и распределяют ресурсы, такие как ЦП и память.
KubernetesХотя не существует стандарта для управления кластерами, менеджер кластеров с открытым исходным кодом Kubernetes, изначально разработанный Google, является самым популярным. Поддерживаемый Amazon AWS, Google Cloud Engine (GCE) и Microsoft Azure Container Service, Kubernetes является относительно портативным, что помогает предотвратить привязку к поставщику.
Kubernetes может работать даже в частном облаке: OpenStack. Microsoft, Amazon и Google предоставляют сервисы контейнеров, на которых работает Kubernetes, с доступными вариантами коммерческой поддержки.
Istio и EnvoyЕсли Kubernetes обеспечивает балансировку нагрузки и масштабируемость, по умолчанию предполагается, что одна и та же служба будет работать с одним и тем же номером версии и что все службы могут взаимодействовать друг с другом. Kubernetes не предоставляет инструментов для отладки сервисов, которые вызывают сервисы, что иногда называют «наблюдаемостью».
Envoy и Istio — это технологии Service Mesh с открытым исходным кодом, которые добавляют слой для обеспечения безопасности и наблюдения. Они могут шифровать трафик внутри кластера, наблюдая за ним. Envoy, разработанный Lyft, стал первой сервисной сеткой для Kubernetes. Istio включает в себя Envoy, находится поверх него и добавляет несколько плагинов, информационных панелей и других функций для его расширения.
Apache MesosИнструмент для абстрагирования вычислительных ресурсов Apache Mesos может одновременно запускать образы Docker и rkt в одном кластере. DC/OS – это платформа, построенная на базе Mesos, которая функционирует как операционная система центра обработки данных.
Docker SwarmБесплатный продукт Docker для управления кластером. Swarm запускается из командной строки и входит в состав Docker 1.12 и более поздних версий. Swarm изначально не поддерживает автомасштабирование или балансировку нагрузки, но сторонние расширения предоставляют эту функциональность.
Docker DatacenterDocker Datacenter — это не просто коммерческая альтернатива Kubernetes, а простая замена, которая позволяет контейнеризировать весь ваш центр обработки данных и включает коммерческую поддержку. Инструмент имеет интеграцию с LDAP и веб-панель управления с панелью управления, реестром, мониторингом, ведением журнала и непрерывной интеграцией.
Конечно, Docker Datacenter охватывает и расширяет бесплатные продукты Docker с открытым исходным кодом: Docker и Swarm. Инструмент добавляет балансировку нагрузки и масштабирование, которых нет в Swarm. И, конечно же, он работает с Docker Enterprise.
Контейнеры для хранения
Контейнеры взаимозаменяемы, как валюта. Это работает исключительно хорошо для веб-сервисов и микросервисов, которые можно масштабировать по запросу. Хранилища и базы данных, с другой стороны, нуждаются в постоянных местах для хранения данных или, по крайней мере, в стандартном уровне интерфейса. Организациям, которые хотят перейти на полностью контейнерную инфраструктуру, требуется хранилище, и теперь компании удовлетворяют этот спрос.
BlockBridgeBlockBridge, компания, занимающаяся разработкой эластичной платформы хранения, предлагает хранилище в виде контейнера с использованием Docker с поддержкой Kubernetes, OpenStack и программно-определяемого безопасного хранилища.
EMC / libstorageСистема EMC / libstorage предлагает библиотеку кода для предоставления бесплатного и открытого контейнерного хранилища.
Подключаемые модули Docker для храненияEMC, NetApp и другие создали подключаемые модули для поддержки хранения, которые Docker Inc. предоставляет для загрузки.
Безопасность контейнеров
Единый вход в систему, интеграция с LDAP, аудит, обнаружение и предотвращение вторжений, а также сканирование уязвимостей — все это болевые точки для организаций, переходящих на контейнеры. Даже традиционные устройства и программное обеспечение может быть трудно, если вообще возможно, настроить в кластерах контейнеров. К счастью, несколько поставщиков работают над решением этой проблемы.
TwistlockВы создаете образы Docker из компонентов, таких как операционная система, веб-сервер или система управления контентом. Проблема в том, что неисправленное или устаревшее программное обеспечение на образе может таить в себе угрозу безопасности. Сканер уязвимостей Twistlock решает эту проблему, сравнивая изображения с базой данных известных угроз. Это автоматический аудит базы данных, которая постоянно обновляется. Другие основные функции включают более классическое обнаружение вторжений и системы соответствия нормативным требованиям.
Aqua Container SecurityКак и Twistlock, Aqua фокусируется на возможности создавать, отслеживать и применять политики для контейнеров, а также на интеграции с непрерывной интеграцией (CI), выполняя проверки безопасности при каждой сборке.
StackRoxКомпания StackRox, основанная Самиром Бхалотрой, бывшим руководителем службы безопасности Google и старшим директором по кибербезопасности в Администрации президента США, обеспечивает обнаружение кластеров Kubernetes. Программное обеспечение проверяет весь кластер, сравнивая поведение работающих контейнеров с политиками безопасности компании. StackRox позволяет документировать и автоматически оценивать эти политики в коде.
AporetoAporeto шифрует каждую рабочую нагрузку между контейнерами, обеспечивая аутентификацию и авторизацию. Программное обеспечение также позволяет программно определять политику безопасности и обеспечивать ее соблюдение.
Операционные системы
Большинство дистрибутивов операционных систем Linux основаны на удобстве и включают большие предустановленные пакеты на случай, если они понадобятся пользователю. Docker, напротив, предназначен для облегченной виртуализации — для запуска как можно большего количества одинаковых машин с наименьшим объемом накладных расходов с точки зрения памяти, диска и ЦП.
В ответ поставщики разработали оптимизированные для контейнеров сборки, которые пытаются сбалансировать возможности, которые могут понадобиться командам в дистрибутиве Linux, с минимализмом, которого требуют контейнеры. Вот несколько самых популярных из них, а также некоторые варианты, отличные от Linux.
Alpine Linux
Если вы создаете образ Docker и не указываете операционную систему, вы будете использовать Alpine Linux. Это означает, что его использует большое количество примеров и тестовых контейнеров Docker. Возможно, было бы полезно узнать сильные и слабые стороны операционной системы, которая является простой, но небольшой, быстрой и относительно безопасной.
RancherOS
Образ системы RancherOS, содержащий только ядро Linux и сам Docker, занимает всего 22 МБ дискового пространства. RancherOS исключает systemd, систему управления службами, встроенную в большинство версий Linux, вместо этого запускает сам Docker Daemon в качестве системы инициализации или начальной загрузки.
CoreOS Container LinuxCoreOS Container Linux, предназначенный для работы с инструментами и системами CoreOS Linux, предварительно настроен для запуска контейнеров Linux. Он также поставляется с включенными автоматическими обновлениями; операционные системы обновляются без какой-либо обработки.
Ubuntu CoreCanonical, материнская компания Ubuntu Linux, утверждает, что Ubuntu является наиболее распространенной ОС для контейнеров. В состав дистрибутива Ubuntu входит Core — небольшая безопасная версия, предназначенная для устройств и контейнеров Интернета вещей. Core отличается высокой производительностью, компактностью и транзакционными обновлениями, что гарантирует успешный откат неудачных обновлений. Конечно, использование Ubuntu Core означает, что вы можете приобрести поддержку у Canonical.
Red Hat Atomic HostОрганизации, использующие Red Hat Enterprise и желающие использовать контейнеры, захотят, чтобы их хосты работали под управлением операционной системы Red Hat Atomic Host. Эти инструменты позволят вам размещать контейнеры Linux в минимальной версии Red Hat Enterprise Linux.
Microsoft Nano ServerNano Server — это небольшая удаленно управляемая операционная система с интерфейсом командной строки, основанная на Windows Server 2016. Разработанная для работы исключительно в качестве контейнера, Nano предоставляет собственные возможности контейнера для Windows Server. Windows Pro 10 Enterprise — еще одна операционная система Microsoft, в которой могут размещаться контейнеры Windows.
VMware PhotonИмея 220 МБ на диске, Photon представляет собой более крупную контейнерную операционную систему, чем некоторые другие, хотя ее размер составляет всего лишь одну сотую от размера последней версии Windows. Этот хост-контейнер Linux предназначен для интеграции с продуктами виртуализации VMware vSphere.
События контейнеров и источники для поддержки
После того, как вы примите решение о контейнерах, самой сложной частью будет их внедрение и поддержка. От конференций до форумов поддержки и коммерческой поддержки — вот ресурсы, которые вам нужны.
Cloud Native Computing Foundation
Когда такие компании, как IBM, Lyft и Google, запускают технологию с открытым исходным кодом, им нужен кто-то, кто взял бы ее на себя и поддерживал. Вот тут-то и появляется CNCF, обеспечивающая обслуживание и управление такими проектами, как Kubernetes, Envoy и containerd. CNFC также организует мероприятия.
DockerConЭто мероприятие нужно посетить, если ваша компания занимается архитектурой, полностью основанной на Docker, при поддержке Docker Datacenter, Swarm и других продуктов от деловых партнеров Docker. ДокерКон 2019, который завершился 2 мая, состоял из 11 треков: от молниеносных докладов до практических семинаров, презентаций поставщиков и тематических исследований.
KubeCon+CloudNative ConГлавное мероприятие CNCF, KubeCon+CloudnativeCon, ежегодно проводится на нескольких континентах. В 2019 году локации включают Барселону, Испанию и Китай.
StackOverflowStackOverflow – крупнейший и самый популярный онлайн-сайт вопросов и ответов для программистов – предлагает множество информации о развертывании приложений в контейнерах. Он также делает это без навязчивой рекламы и не требует регистрации для получения информации.
Сайт сообщества DockerКураторский сайт сообщества Docker предоставляет ориентированную на Docker информацию и форумы.
Идите вперед и контейнеризируйтесьХотя концепция контейнеров проста, дьявол, как говорится, кроется в деталях. Если ваша техническая команда использует контейнеры исключительно для сборки и тестирования, ваши решения ограничиваются выбором правильной операционной системы и типа контейнера. Но если система создает образ для каждой сборки, зачем останавливаться на достигнутом?
Сегодня такие инструменты, как Kubernetes, позволяют создавать рабочие кластеры, построенные из контейнеров, с автоматическим масштабированием. Поскольку стандарты открыты и каждый крупный поставщик облачных услуг поддерживает Kubernetes, его использование для управления кластером может предотвратить привязку к поставщику.
Это наш краткий список ресурсов-контейнеров, но мы приветствуем ваши. Что мы пропустили? Не стесняйтесь добавлять свои советы и предложения в этот список, разместив их ниже.
Продолжайте учиться
Выберите правильный инструмент ESM для ваших нужд.
Контейнерные технологии: Контейнеризация: что это такое — контейнерные технологии