Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в среде виртуализации на уровне операционной системы. Позволяет «упаковать» приложение со всем его окружением и зависимостями в контейнер, который может быть перенесён на любую Linux-систему с поддержкой cgroups в ядре, а также предоставляет среду по управлению контейнерами. 

Docker - очень популярное решение, и число его пользователей увеличивается высокими темпами. Enterprise Edition используют такие клиенты, как:

  • Visa Inc,
  • PayPal,
  • Societe Generale,
  • GSK,
  • Alibaba Group,
  • Indiana University,
  • ADP.
Welcome to Docker

Разрабатывается и поддерживается одноимённой компанией-стартапом, распространяется в двух редакциях — Community Edition по лицензии Apache 2.0 и Enterprise Edition (для организаций). Написан на языке Go.

Программное обеспечение функционирует в среде Linux с ядром, поддерживающим cgroups и изоляцию пространств имён (namespaces); существуют сборки только для платформ x86-64 и ARM. Начиная с версии 1.6 возможно использование в ОС Windows.

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

Docker и принципы разработки

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

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

Docker позволяет сделать процесс разработки прозрачным и стандартизирует его. Все проекты в контейнерах устроены по одному и тому же принципу, поэтому разработка ведется более чисто - разработчик может посмотреть, как это реализовано в других проектах и сделать по аналогии. Также снижается зависимость от конкретных исполнителей - Docker производит uber'изацию рынка разработки.

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

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

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

Набор клиентских средств позволяет запускать процессы в новых контейнерах, останавливать и запускать контейнеры, приостанавливать и возобновлять процессы в контейнерах. Серия команд позволяет осуществлять мониторинг запущенных процессов. Новые образы возможно создавать из специального сценарного файла (docker build, файл сценария носит название dockerfile), возможно записать все изменения, сделанные в контейнере в новый образ. Все команды могут работать как с docker-демоном локальной системы, так и с любым сервером Docker, доступным по сети. Кроме того, в интерфейсе командной строки встроены возможности по взаимодействию с публичным репозиторием Docker Hub, в котором размещены предварительно собранные образы контейнеров, например, команда docker search позволяет осуществить поиск образов среди размещённых в нём, образы можно скачивать в локальную систему (docker pull), возможно также отправить локально собранные образы в Docker Hub.

Подробно различия редакций представлены ниже.

Enterprise Edition имеет три тарифных плана: Basic, Standart и Advanced.

Community Edition Enterprise Edition
Управление контейнерами, оркестрация, безопасность, сеть + +
Сертифицированные инфраструктура, плагины, контейнеры ISV Начиная с Basic
Техподдержка Поддержка community Начиная с Standart
Управление образами, кеширование Начиная с Standart
Приложение для управления контейнерами Начиная с Standart
Поддержка RBAC, LDAP/AD Начиная с Standart
Безопасный многопользовательский режим Начиная с Advanced
Сканирование безопасности образов и непрерывное сканирование уязвимостей Начиная с Advanced
Стоимость Бесплатно Тарифный план Basic - от 750$ и выше за 1 ноду/год
Тарифный план Standart - от 750$ и выше за 1 ноду/год
Тарифный план Advanced - от 1250$ и выше за 1 ноду/год.

Стоимость тарифного плана Enterprize Edition зависит от операционной системы (Windows и Linux) и времени суток, когда будет доступна поддержка: круглосуточно или с 9.00 до 18.00 по местному времени.

Напишите нам, и мы поможем Вам в решении бизнес задач
наверх