Docker – это программная платформа для быстрой разработки, тестирования и развертывания приложений. Docker упаковывает ПО в стандартизованные блоки, которые называются контейнерами. Каждый контейнер включает все необходимое для работы приложения: библиотеки, системные инструменты, код и среду исполнения. Благодаря Docker можно быстро развертывать и масштабировать приложения в любой среде и сохранять уверенность в том, что код будет работать.
Использование Docker на AWS предоставляет разработчикам и системным администраторам надежный и экономичный способ сборки, доставки и запуска распределенных приложений любого масштаба.
Новые объявления: Docker сотрудничает с AWS, чтобы помочь разработчикам ускорить доставку современных приложений в облаке. Благодаря такому взаимодействию разработчики могут с помощью Docker Compose и Docker Desktop оптимизировать локальный рабочий процесс, применяемый на данный момент, для беспрепятственного развертывания приложений на Amazon ECS и AWS Fargate. Подробнее в блоге.
Что такое Docker?
Как работает Docker
В основе работы Docker лежит стандартизированный способ исполнения кода. Docker – это операционная система для контейнеров. Подобно тому как виртуальная машина создает виртуальное представление аппаратного обеспечения сервера (то есть устраняет необходимость непосредственно управлять таковым), контейнеры создают виртуальное представление серверной операционной системы. После установки на каждый сервер Docker предоставляет доступ к простым командам, необходимым для сборки, запуска или остановки контейнеров.
Такие сервисы AWS, как AWS Fargate, Amazon ECS, Amazon EKS и AWS Batch, упрощают работу с контейнерами Docker, а также управление ими в любом масштабе.
Почему следует использовать Docker
Использование Docker позволяет быстрее и эффективнее доставлять или перемещать код, стандартизирует выполняемые приложениями операции и в целом экономит средства, оптимизируя использование ресурсов. Благодаря Docker пользователи получают объект, который с высокой надежностью можно запускать на любой платформе. Простой и понятный синтаксис Docker обеспечивает полный контроль над выполняемыми операциями. Повсеместное внедрение контейнеров подразумевает доступ к разнообразным инструментам и готовым приложениям, которые можно использовать с Docker.
Быстрая доставка программного обеспечения
Пользователи Docker осуществляют доставку приложений в среднем в семь раз чаще, чем те, кто не использует Docker. Docker позволяет доставлять изолированные сервисы с необходимой периодичностью.
Стандартизация операций
Доставка приложений в небольших контейнерах упрощает процесс развертывания, обнаружения проблем и отката для их устранения к прошлым версиям.
Эффективное перемещение
Приложения на основе контейнеров Docker можно эффективно переносить с локальных машин, на которых ведется разработка, в AWS для рабочего развертывания.
Зачем нужен и как работает Docker — ликбез 🐳
Экономия
Контейнеры Docker позволяют исполнять больше кода на каждом сервере, повышая эффективность использования ресурсов и сокращая расходы.
Когда рекомендуется использовать Docker
Контейнеры Docker можно использовать в качестве основных компонентов для создания современных платформ и приложений. Docker упрощает сборку и запуск распределенных микросервисных архитектур, развертывание кода с помощью стандартизированных конвейеров непрерывной интеграции и доставки, создание высокомасштабируемых систем обработки данных и полностью управляемых платформ для разработчиков. Сотрудничество AWS и Docker позволит упростить операцию развертывания артефактов Docker Compose в Amazon ECS и AWS Fargate.
Микросервисы
Воспользуйтесь преимуществами стандартизированного развертывания кода с помощью контейнеров Docker для создания и масштабирования распределенных архитектур приложений.
Непрерывная интеграция и доставка
Ускорьте доставку приложений за счет стандартизации рабочих сред и устранения расхождений между стеками и версиями языков программирования.
Обработка данных
Обработки больших данных как сервис. Объедините пакеты данных и аналитики в портативные контейнеры, запуск которых не требует специальных технических навыков.
Контейнер как сервис
Вопросы и ответы по Docker
Вопрос: Как можно использовать Docker?
Благодаря Docker можно быстро развертывать и масштабировать приложения в любой среде и сохранять уверенность в том, что код будет работать. Это становится возможным благодаря тому, что Docker упаковывает ПО в стандартизованные блоки, называемые контейнерами. Каждый контейнер включает все необходимое для работы приложения: библиотеки, системные инструменты, код и среду исполнения.
Вопрос: Что такое образ Docker?
Образ Docker – это доступный только для чтения шаблон, который задает настройки контейнера. Образ содержит исполняемый код вместе с определениями любых библиотек и зависимостей, которые могут понадобиться для его работы. Контейнер Docker представляет собой запущенный (работающий) образ Docker. AWS предоставляет реестр образов Amazon Elastic Container Registry (ECR) для хранения и быстрого извлечения образов Docker.
Вопрос: В чем разница между Docker и виртуальной машиной?
Виртуальные машины (VM) создают виртуальное представление аппаратного обеспечения сервера (то есть устраняют необходимость непосредственно управлять таковым), а контейнеры создают виртуальное представление серверной операционной системы. Docker является операционной системой (или исполняемой средой) для контейнеров. Программное ядро Docker устанавливается на каждый сервер, на котором предполагается запускать контейнеры, и предоставляет набор простых команд, которые можно использовать для сборки, запуска и остановки контейнеров.
Запуск Docker на AWS
В AWS обеспечена поддержка решений Docker с открытым исходным кодом и коммерческого уровня. Существует несколько способов запуска контейнеров на AWS, в том числе с помощью Amazon Elastic Container Service (ECS) – высокомасштабируемого и высокопроизводительного сервиса управления контейнерами.
Клиенты могут легко развернуть свои контейнерные приложения с локальной среды Docker непосредственно в Amazon ECS. AWS Fargate – это технология для Amazon ECS, которая позволяет запускать контейнеры в рабочей среде без необходимости развертывания соответствующей инфраструктуры или управления ею. Amazon Elastic Container Service for Kubernetes (EKS) упрощает запуск Kubernetes на AWS.
AWS Fargate – это технология для Amazon ECS, которая позволяет запускать контейнеры без необходимости выделения серверов или управления ими. Amazon Elastic Container Registry (ECR) – это высокодоступный и защищенный частный репозиторий контейнеров, который упрощает хранение образов контейнеров Docker, а также управление ими. Сервис шифрует и сжимает образы при хранении, обеспечивая их защиту и быстрое извлечение. AWS Batch позволяет запускать рабочие нагрузки пакетной обработки на основе контейнеров Docker с широкими возможностями масштабирования.
Amazon ECS
Amazon ECS – это высокопроизводительный сервис оркестрации для запуска контейнеров Docker в облаке AWS с широкими возможностями масштабирования.
Источник: aws.amazon.com
Что такое Docker?
Это содержимое является выдержкой из электронной книги Архитектура микрослужб .NET для контейнерных приложений .NET, доступной в документации .NET или в виде бесплатного pdf-файла, который можно читать в автономном режиме.
Docker — это проект с открытым исходным кодом для автоматизации развертывания приложений в виде переносимых автономных контейнеров, выполняемых в облаке или локальной среде. Одновременно с этим, Docker — это компания, которая разрабатывает и продвигает эту технологию в сотрудничестве с поставщиками облачных служб, а также решений Linux и Windows, включая корпорацию Майкрософт.
Рис. 2-2. Docker развертывает контейнеры на всех уровнях гибридного облака.
Контейнеры Docker могут работать в любой среде, например в локальном центре обработки данных, в службе стороннего поставщика или в облаке Azure. Контейнеры образов Docker работают в исходном формате в Linux и Windows. Но образы Windows будут выполняться только на узлах Windows, тогда как образы Linux — на узлах Linux или Windows (на данный момент с помощью виртуальной машины Linux Hyper-V). Термин «узлы» здесь означает физические серверы и виртуальные машины.
Разработчики могут использовать среды разработки на базе Windows, Linux или macOS. На компьютере разработчика выполняется узел Docker, где развернуты образы Docker с создаваемым приложением и всеми его зависимостями. Разработчики, работающие в Linux или macOS, могут использовать узел Docker на базе Linux и создавать образы только для контейнеров Linux. (В macOS разработчики могут изменять код приложения и запускать Docker CLI в macOS, но на момент написания этой статьи они не могут запускать контейнеры непосредственно в macOS.) В Windows разработчики могут создавать образы для контейнеров Linux или Windows.
Docker предоставляет Docker Desktop для Windows и macOS, позволяя размещать контейнеры в среде разработки и использовать дополнительные средства разработки. Оба продукта устанавливают необходимую виртуальную машину (узел Docker) для размещения контейнеров.
Для выполнения контейнеров Windows есть среды выполнения двух типов:
- Контейнеры Windows Server изолируют приложение с помощью технологии изоляции процесса и пространства имен. Контейнер Windows Server использует ядро совместно с узлом контейнеров и всеми остальными контейнерами на узле.
- Контейнеры Hyper-V увеличивают изоляцию, обеспеченную контейнерами Windows Server, запуская каждый контейнер в оптимизированной виртуальной машине. В этой конфигурации ядро узла контейнера не используется совместно с контейнерами Hyper-V, что улучшает изоляцию.
Образы для этих контейнеров создаются и работают одинаково. Различие заключается лишь в том, что для создания контейнера из образа с контейнером Hyper-V нужен дополнительный параметр. Дополнительные сведения см. в разделе Контейнеры Hyper-V.
Сравнение контейнеров Docker с виртуальными машинами
На рисунке 2-3 показано сравнение между виртуальными машинами и контейнерами Docker.
![]() |
![]() |
Виртуальные машины содержат приложение, необходимые библиотеки или двоичные файлы и всю операционную систему. Полная виртуализация требует больше ресурсов, чем создание контейнеров. | Контейнеры включают в себя приложение и все его зависимости. Но они используют ядро ОС совместно с другими контейнерами, которые выполняются в изолированных процессах в пользовательском пространстве операционной системы узла. (Это не относится к контейнерам Hyper-V, где каждый контейнер запускается на отдельной виртуальной машине.) |
Рис. 2-3. Сравнение традиционных виртуальных машин с контейнерами Docker
Для виртуальных машин на сервере узла создается три базовых уровня: самый нижний инфраструктурный слой; затем операционная система узла и низкоуровневая оболочка; и поверх этого каждая виртуальная машина использует собственную ОС и все необходимые библиотеки. Для Docker сервер узла предоставляет только инфраструктуру и операционную систему, а также ядро контейнеров, которое изолирует контейнер с использованием базовых служб операционной системы.
Так как контейнеры требуют гораздо меньше ресурсов (например, им не нужна полная ОС), их проще развертывать и они быстрее запускаются. Это позволяет повысить плотность развертываний, то есть запустить на одной единице оборудования больше служб и сократить затраты на них.
Запуск на одном ядре приводит к тому, что уровень изоляции будет ниже, чем на виртуальных машинах.
Основная цель образа — привести среду (зависимости) к единообразию в различных развертываниях. Это означает, что вы можете отладить образ на одном компьютере, а затем развернуть его на другом компьютере и получить ту же среду.
Образ контейнера — это способ упаковки приложения или службы для надежного и воспроизводимого развертывания. Можно сказать, что Docker является не только технологией, но еще философией и процессом.
При использовании Docker вы не услышите, как разработчики говорят: «Это работает на моем компьютере, почему бы не в рабочей среде?» Они могут просто сказать: «Оно выполняется в Docker», так как упаковаемое приложение Docker может быть выполнено в любой поддерживаемой среде Docker и выполняется так, как оно было предназначено для всех целевых объектов развертывания (таких как Dev, QA, промежуточная среда и рабочая среда).
Простая аналогия
Возможно, небольшая аналогия поможет вам быстрее освоить ключевую концепцию Docker.
Вернемся ненадолго назад во времени, в 1950-е годы. Тогда еще не было текстовых редакторов, и повсеместно использовались фотокопировальные устройства (то есть то, что тогда так называлось).
Представьте, что вам понадобилось быстро подготовить наборы писем, чтобы отправить их с обычной бумажной почтой в настоящих конвертах с марками и доставить по домашнему адресу клиента (не забывайте, еще не существует электронной почты).
В какой-то момент вы понимаете, что каждое письмо составлено из широкого набора абзацев, которые выбираются и упорядочиваются по мере необходимости с учетом назначения письма. Вы создаете систему, которая быстро создает нужные письма, и обоснованно надеетесь на существенную прибавку.
Вы создали простую систему со следующим алгоритмом:
- У вас есть пачка прозрачных листов, каждый из которых содержит один абзац.
- Чтобы подготовить комплект писем, вы отбираете листы с нужными абзацами, собираете их в стопку и выравниваете так, чтобы все правильно читалось.
- Теперь вы помещаете готовый набор в фотокопировальное устройство и нажмите кнопку запуска, чтобы изготовить нужное количество копий.
Это и есть основная концепция Docker в упрощенной форме.
В Docker каждый слой представляет некоторый набор изменений, которые применяются к файловой системе после выполнения команды, такой как установка программы.
Таким образом, при «просмотре» файловой системы после копирования слоя вы увидите все файлы, включенные в слой при установке программы.
Такой образ можно рассматривать как дополнительный жесткий диск, доступный только для чтения, который готов к установке на «компьютер» с уже установленной операционной системой.
Соответственно, роль «компьютера» здесь выполняет контейнер, в который устанавливается жесткий диск этого образа. Контейнер, как и обычный компьютер, можно включать и отключать.
Источник: learn.microsoft.com
Что такое Docker?
Контейнер Docker — это формат пакетирования, который позволяет упаковать весь код и зависимости приложения в стандартный формат, чтобы приложение могло быстро и надежно запускаться в разных вычислительных средах. Контейнер Docker — это популярный легкий и автономный выполняемый контейнер, который включает в себя все необходимое для запуска приложения, в том числе библиотеки, системные инструменты, код и среду выполнения. Docker — это также программная платформа, которая позволяет разработчикам быстро создавать, тестировать и развертывать контейнерные приложения.
Контейнеры как услуга (Containers as a Service — CaaS), или контейнерные сервисы, — это управляемые облачные решения, которые контролируют жизненный цикл контейнеров. Контейнерные сервисы позволяют координировать (запускать, останавливать, масштабировать) среду выполнения контейнеров. Используя контейнерные сервисы, вы можете упростить, автоматизировать и ускорить разработку и развертывание приложений.
За последние несколько лет Docker и контейнерные сервисы быстро распространились и стали невероятно популярны. Из почти неизвестной и узко специализированной технологии с открытым исходным кодом в 2013 году Docker превратился в стандартизированную среду выполнения, которая теперь официально поддерживается для многих корпоративных продуктов Oracle.
Терминология Docker с определениями
Docker.
Контейнерная платформа программного обеспечения, созданная для разработки, отправки и запуска приложений с использованием контейнерных технологий. Платформа Docker представлена в двух версиях: Enterprise Edition и Community Edition.
Контейнер.
В отличие от виртуальной машины, которая виртуализирует аппаратное обеспечение, контейнер представляет собой небольшую виртуализацию уровня операционной системы за счет обобщения «пространства пользователя». Контейнеры используют общее с другими контейнерами ядро системы хоста. Контейнер, который запускается в операционной системе хоста, — это стандартный программный модуль, который упаковывает код и все зависимости, чтобы приложение могло быстро и надежно запускаться в той или иной среде. Контейнеры не сохраняются, а развертываются из образов.
Ядро Docker.
Программное обеспечение с открытым кодом, установленное на хосте и обеспечивающее создание и запуск контейнеров. Ядра Docker действуют как клиент-серверные приложения, поддерживающие контейнеры на различных серверах Windows и в операционных системах Linux, включая Oracle Linux, CentOS, Debian, Fedora, RHEL, SUSE и Ubuntu.
Образы Docker.
Коллекция программного обеспечения, которое должно запускаться как контейнер. Оно содержит набор инструкций по созданию контейнера, который может запускаться на платформе Docker. Образы являются неизменяемыми, поэтому, чтобы внести изменения, необходимо создать новый образ.
Реестр Docker.
Место для хранения и выгрузки образов. Реестр — это масштабируемое серверное приложение без учета состояний, которое сохраняет и распространяет образы Docker.
Кто использует Docker?
Docker — это открытая платформа для разработки приложений, созданная для поддержки DevOps и разработчиков. Используя Docker, разработчики могут создавать, упаковывать, доставлять и запускать приложения в виде легких, портативных, самодостаточных контейнеров, способных работать практически где угодно. Контейнеры позволяют разработчикам упаковать приложение со всеми его зависимостями и развернуть как единое целое. Благодаря готовым и самоподдерживающимся контейнерам приложений разработчики могут сосредоточиться на создании и использовании приложений, не думая о базовой операционной системе или системе развертывания.
Кроме того, разработчики могут использовать тысячи контейнерных приложений с открытым исходным кодом, которые уже разработаны для запуска в контейнере Docker. Docker предоставляет командам DevOps инструменты для непрерывной интеграции и разработки, а также позволяет снизить ограничения и сложность, необходимые в их системной архитектуре для развертывания приложений и управления ими. С появлением облачных сервисов оркестрации контейнеров любой разработчик может разрабатывать контейнерные приложения локально в своей среде разработки, а затем перемещать и запускать эти контейнерные приложения в производственной среде в облачных сервисах, таких как управляемые сервисы Kubernetes.
Docker и разработчики
Упаковывать контейнеры может любой разработчик. Представители индустрии программного обеспечения часто разделяют разработчиков на группы по их специализации: клиентские программы, серверные программы и все промежуточные этапы. Хотя упаковкой контейнеров чаще всего занимаются разработчики серверных программ, любой, кто знаком с основными понятиями CaaS, может успешно справиться с этим этапом цикла разработки ПО. Прежде чем упаковывать зависимости своего приложения, посетите страницу developer.oracle.com и ознакомьтесь с инструментами, которые можно использовать при создании собственного приложения или программы.
Сравнение 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 имеет собственную файловую систему, собственный сетевой стек (и, следовательно, собственный IP-адрес), собственное пространство процессов и определенные ограничения ресурсов для ЦП и памяти. Поскольку контейнеру Docker не нужно загружать операционную систему, он запускается мгновенно. Docker — это технология изоляции, то есть разделения ресурсов операционной системы хоста, в отличие от виртуализации, которая предоставляет гостевую операционную систему поверх операционной системы хоста.
Система инкрементных файлов
Файловая система образа 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 в общедоступный или частный репозиторий.
Docker как среда выполнения микросервисов
Идея разделить монолитные приложения на более мелкие микросервисы сегодня привлекает большое внимание разработчиков программного обеспечения.
Микросервисы развертываются независимо как процесс, используют облегченные протоколы для связи друг с другом, а каждый сервис обладает своими данными. Поскольку при управлении микросервисами применяется децентрализованный подход, требуется достаточно значительная автоматизация инфраструктуры, автоматизация тестирования, полностью автоматизированные конвейеры CD и квалифицированные и оперативные команды DevOps.
По поводу такого архитектурного стиля все еще идет много дискуссий, но было бы наивно полагать, что приложение, разложенное на микросервисы, может просто работать как набор процессов. Вот лишь несколько требований: микросервис должен быть независимым от хоста и изолированным на уровне операционной системы. Он должен работать в пределах своих ресурсных возможностей, увеличиваться и уменьшаться в размерах, перезапускаться в случае сбоя, обнаруживаться другими микросервисами и подключаться к ним через программно-определяемый сетевой уровень.
Таким образом, запуск микросервиса в контейнере Docker — это прекрасный старт для решения большинства из этих задач.
Docker: два основных измерения
Docker меняет способ создания, доставки и запуска программного обеспечения в двух разных измерениях:
- Он усовершенствует процесс надежного перехода приложения от разработки к производству.
- Он предоставляет стандартный формат образа для передачи из локальной среды в облако.
Оба измерения подробно описаны ниже.
Образ Docker: от разработки к производству
Создание образа Docker со всеми зависимостями решает знакомую многим разработчикам проблему «а на моем компьютере все работало». Основная идея заключается в том, что образ Docker создается конвейером сборки автоматически из репозитория исходного кода, такого как Git, и первоначально тестируется в среде разработки. Затем этот постоянный образ сохраняется в реестре Docker.
Как показано на рисунке 4, этот же образ используется для дальнейших тестов на загрузку, тестов интеграции, приемочных тестов и т. д. В каждой среде будет использоваться один и тот же образ. Небольшие, но необходимые для среды различия, такие как URL-адрес JDBC для производственной базы данных, могут быть переданы в контейнер в виде переменных или файлов среды.
Статистика показывает, что на сегодняшний день в 65 % случаев Docker используется в процессе разработки, а в 48 % случаев Docker применяется для непрерывной интеграции.
Docker и облако
Docker изменил отношение к общедоступным облакам. С одной стороны, благодаря образам Docker впервые в истории появился общий формат пакета, который можно запускать как в локальной среде, так и в среде любого крупного поставщика облачных решений. Контейнеры Docker работают на ноутбуке так же, как и в Oracle Cloud.
С другой стороны, поскольку контейнеры Docker работают в каждом крупном публичном облаке, они способствуют преодолению давно укоренившегося предубеждения против публичных облаков о неизбежности привязки к поставщику. Все крупные поставщики облачных решений теперь предлагают Docker как PaaS.
Версии Docker: зрелость базовой технологии
Версии Docker выпускаются намного быстрее, чем версии традиционного корпоративного программного обеспечения. Иногда такой быстрый темп выпуска версий в сочетании с новизной самого проекта Docker вызывает опасения относительно его безопасности и стабильности работы.
Хотя Docker и его командная строка, демон Docker, его API и инструменты, такие как Docker Swarm, Docker Machine и Docker Compose, активно развивались только в последние три года, основные функции ядра были доступны в каждом ядре Linux уже почти десять лет.
Ярким примером использования контейнерных технологий уже на первых этапах их развития может служить компания Google. Компания использовала контейнеры Linux еще до появления Docker. Более того, Google все запускает в контейнерах. По имеющимся оценкам, Google запускает несколько миллиардов контейнеров в неделю.
История контрольных групп и пространств имен
Docker использует такие базовые функции ядра Linux, как контрольные группы и пространства имен. В 2008 году контрольные группы были введены в ядро Linux по результатам работы, ранее проделанной разработчиками Google 1 . Контрольные группы ограничивают и контролируют использование ресурсов в определенном наборе процессов операционной системы.
Ядро Linux использует пространство имен, чтобы изолировать системные ресурсы процессов друг от друга. Первое пространство имен, то есть пространство имен файловой системы (mount), было внедрено еще в 2002 году. 2
Контейнерные облачные решения
В первой части этой статьи объяснялись некоторые важные понятия 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
Упаковывать контейнеры может любой разработчик. Представители индустрии программного обеспечения часто разделяют разработчиков на группы по их специализации: клиентские программы, серверные программы и все промежуточные этапы. Хотя упаковкой контейнеров чаще всего занимаются разработчики серверных программ, любой, кто знаком с основными понятиями CaaS, может успешно справиться с этим этапом цикла разработки ПО. Прежде чем упаковывать зависимости своего приложения, посетите страницу developer.oracle.com и ознакомьтесь с инструментами, которые можно использовать при создании собственного приложения или программы.
Ниже приведены несколько источников получения или создания образов Docker для продуктов Oracle. Репозиторий Oracle GitHub для образов Docker содержит файлы Docker и образцы для создания образов Docker для коммерческих продуктов Oracle и проектов с открытым исходным кодом, поддерживаемых Oracle.
- Репозиторий Oracle GitHub для образов Docker
- Docker Hub
- Oracle Container Registry
Тренинг по Docker: контейнерная разработка с Docker
Справочная информация
- Контрольные группы (Wikipedia)
- Пространства имен Linux (Wikipedia)
Источник: www.oracle.com