Ничего не найдено

По Вашему запросу ничего не найдено.

Рекомендуем сделать следующее:

  • Проверьте правильность написания ключевых слов.
  • Используйте синонимы введенных Вами ключевых слов, например “приложение” вместо “программное обеспечение”.
  • Попробуйте воспользоваться одним из популярных поисковых запросов ниже.
  • Начните новый поиск.
Актуальные вопросы

Контейнеры Docker и контейнерные облачные решения

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

Containers as a Service (CaaS) или контейнерные сервисы — это управляемые облачные решения, которые управляют жизненным циклом контейнеров. Контейнерные сервисы позволяют координировать (запускать, останавливать, масштабировать) среду выполнения контейнеров. Используя контейнерные сервисы, Вы можете упростить, автоматизировать и ускорить жизненный цикл разработки и развертывания приложений.

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

Кто использует Docker?

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

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

Сравнение Docker и Kubernetes

Контейнеры Linux существуют с 2008 года, но до появления контейнеров Docker в 2013 году они были малоизвестны. С появлением контейнеров Docker произошел взрыв интереса к разработке и развертыванию контейнерных приложений. По мере того как количество контейнерных приложений росло и охватывало сотни контейнеров, развернутых на нескольких серверах, управление ими становилось все более сложным. Как координировать, масштабировать, управлять и планировать сотни контейнеров? В этом Вам поможет Kubernetes. Kubernetes — это система оркестрации с открытым исходным кодом, которая позволяет запускать контейнеры Docker и выполнять нагрузки. Это поможет Вам справиться с операционными сложностями при переходе к масштабированию нескольких контейнеров, развернутых на нескольких серверах. Модуль Kubernetes автоматически организует жизненный цикл контейнера, распределяя контейнеры приложений по инфраструктуре хостинга. Kubernetes быстро увеличивает или уменьшает объем ресурсов в зависимости от потребности. Он постоянно подготавливает, планирует, управляет и контролирует работоспособность контейнеров.

Основы Docker

Основные понятия технологии Docker — это образы и контейнеры. Образ Docker содержит все, что необходимо для запуска программного обеспечения: код, среду выполнения (например, вJava Virtual Machine (JVM)), драйверы, инструменты, сценарии, библиотеки, развертывания и т. д.

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

Образ docker
Рис. 1

Изоляция и виртуализация

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

Виртуальная машина и Kubernetes — инфраструктура развертывания
Образ системы инкрементных файлов
Рис. 2

Система инкрементных файлов

Файловая система образа Docker многоуровневая с семантикой копирования при записи. Таким образом обеспечивается наследование и повторное использование, экономия ресурсов на диске и скачивание инкрементных образов.

Как показано на рис. 2, образ Docker с развертыванием WebLogic может быть основан на образе с доменом Oracle WebLogic Server, который может быть основан на образе WebLogic, основанном на образе Java Development Kit (JDK), который в свою очередь основан на базовом образе Oracle Linux.

Реестр Docker

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

Реестр Docker также помогает улучшить контроль доступа и безопасность образов Docker, хранящихся в его репозитории. Он управляет распространением изображений, а также может интегрироваться с рабочими процессами разработки приложений. Разработчики могут настроить свой собственный реестр Docker или использовать размещенный сервис реестра Docker, например Docker Hub, Oracle Container Registry, Azure Container Registry и т. д.

Docker Hub — это размещенный реестр Docker, управляемый Docker. Docker Hub содержит более 100 000 образов контейнеров от поставщиков программного обеспечения, проектов с открытым исходным кодом и сообщества. Docker Hub содержит программное обеспечение и приложения из официальных репозиториев, таких как NGINX, Logstash, Apache HTTP, Grafana, MySQL, Ubuntu и Oracle Linux.

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

Рис. 3. Снимок экрана реестра Docker Registry
Рис. 3

Docker как среда выполнения микросервисов

Идея разделить монолитные приложения на более мелкие части микросервисов сегодня привлекает большое внимание разработчиков программного обеспечения.

Микросервисы развертываются независимо как процесс, используют облегченные протоколы для связи друг с другом, а каждый сервис владеет своими данными [7]. Поскольку для микросервисов применяется децентрализованный подход к управлению, требуется достаточно значительная автоматизация инфраструктуры, автоматизация тестирования, полностью автоматизированные конвейеры CD и квалифицированные и оперативные команды DevOps.

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

Таким образом, запуск микросервиса в контейнере Docker — это прекрасный старт для достижения большинства из этих целей.

Docker — Два основных измерения

Docker меняет способ создания, доставки и запуска программного обеспечения в двух разных измерениях:

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

Оба измерения объяснены подробнее ниже.

Образ Docker — от разработки к производству

Создание образа Docker со всеми его зависимостями решает проблему «но это же работало на моем компьютере для разработки». Ключевая идея заключается в том, что образ Docker создается автоматически конвейером сборки из репозитория исходного кода, такого как Git, и первоначально тестируется в среде разработки. Затем этот постоянный образ будет сохранен в реестре Docker.

Как показано на рис. 4, этот же образ будет использоваться для дальнейших нагрузочных тестов, интеграционных тестов, приемочных тестов и т. д. В каждой среде будет использоваться один и тот же образ. Небольшие, но необходимые для среды различия, такие как URL-адрес JDBC для производственной базы данных, могут быть переданы в контейнер в виде переменных или файлов среды.

снимок экрана образа docker
Рис. 4

Статистика показывает, что 65 % всех текущих сценариев использования Docker находятся в разработке, а 48 % используют Docker для непрерывной интеграции [5].

Из локальной среды в облако

Docker изменил отношение к общедоступным облакам: с одной стороны, в образе Docker впервые в истории существует общий формат пакета, который можно запускать как в локальной среде, так и в среде любого крупного поставщика облачных решений. Контейнеры Docker работают на моем ноутбуке так же, как и в Oracle Cloud.

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

Версии Docker — зрелость базовой технологии

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

Хотя Docker и его командная строка, демон Docker, его API и инструменты, такие как Docker Swarm, Docker Machine и Docker Compose, развивались только в последние три года, основные функции ядра были доступны в каждом ядре Linux уже почти десять лет.

Яркий пример использования контейнерных технологий — компания Google. Google использовал контейнеры Linux еще до появления Docker. Более того, Google запускает в контейнере все. По оценкам, Google запускает 2 миллиарда контейнеров в неделю [3].

История пространств имен и контрольных групп

Базовые функции ядра Linux, которые использует Docker, — это контрольные группы и пространства имен. В 2008 году в ядро ​​Linux были введены контрольные группы на основе работы, ранее проделанной разработчиками Google [1]. Контрольные группы ограничивают и контролируют использование ресурсов только в каком-либо одном наборе процессов операционной системы.

Ядро Linux использует пространство имен для изоляции системных ресурсов процессов друг от друга. Первое пространство имен, то есть пространство имен Mount, было внедрено еще в 2002 году.

Контейнерные облачные решения

В первой части этой статьи объяснялись некоторые важные понятия Docker. Однако в производственной среде недостаточно просто запустить приложение в контейнере Docker.

Для настройки и эксплуатации производственной среды требуется оборудование для запуска контейнеров. Такое программное обеспечение, как Docker, а также репозитории и менеджеры кластеров должны устанавливаться, обновляться и исправляться. Если несколько контейнеров Docker обмениваются данными через хосты, необходимо создать сеть. В случае сбоя кластерные контейнеры следует перезапустить. Кроме того, набор связанных друг с другом контейнеров должен быть развернут так же легко, как и один логический экземпляр приложения. Примером этого может служить балансировщик нагрузки, несколько веб-серверов, несколько экземпляров Oracle WebLogic Server с сервером администрирования, управляемый сервер и база данных. Для масштабного управления контейнерными приложениями требуется система оркестровки контейнеров, такая как Kubernetes или Docker Swarm. Развертывание, управление и эксплуатация таких систем оркестровки, как Kubernetes, может быть сложной задачей и отнимать много времени.

Чтобы разработчики могли проще и эффективнее создавать контейнерные приложения, поставщики облачных услуг предлагают облачные контейнерные сервисы или Containers as a Service (CaaS). Облачные контейнерные сервисы помогают разработчикам и операционным группам оптимизировать жизненный цикл контейнеров и управлять им в автоматическом режиме. Такие сервисы оркестрации, обычно созданные с использованием Kubernetes, упрощают для команд DevOps управление масштабными контейнерными приложениями и их работу. Oracle Container Engine for Kubernetes и Azure Kubernetes Service — два примера популярных управляемых облачных сервисов для оркестрации контейнеров.

Oracle Container Engine for Kubernetes — это полностью управляемый, масштабируемый и высокодоступный сервис, который можно использовать для развертывания контейнерных приложений в облаке. Используйте Container Engine for Kubernetes (иногда используется аббревиатура OKE), если Ваша команда разработчиков хочет надежно создавать, развертывать cloud native приложения и управлять ими.

Образы Docker от Oracle—Ниже приведены несколько источников для получения или создания образом Docker для продуктов Oracle. Репозиторий Oracle GitHub для образов Docker содержит файлы Docker и образцы для создания образов Docker для коммерческих продуктов Oracle и проектов с открытым исходным кодом, поддерживаемых Oracle.

Практические занятия по Docker—Контейнерная разработка с Docker

Справочная информация

  1. Контрольные группы (Wikipedia)
  2. Пространство имен Linux (Wikipedia)
  3. ВСЕ в Google выполняется в контейнере, автор Джек Кларк (Jack Clark)
  4. Docker Hub достиг отметки в 5 миллиардов обращений
  5. Эволюция цепочки поставок современного ПО, Опрос Docker, 2016 г.
  6. MOS Doc ID 2216342.1: Поддержка Docker для Oracle DB
  7. Микросервисы, автор Мартин Фоулер (Martin Fowler)
  8. Демонстрация Oracle Container Engine и реестра (3:13)
  9. Документация по Container Engine for Kubernetes