Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Docker: что это такое и зачем он нужен

Оригинал: Docker 101: What it is and why it’s important
Автор: Brandon Butler
Дата публикации: Jun 10, 2014
Перевод: Н.Ромоданов
Дата перевода: январь 2015 г.

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

Что это такое?

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

Так о чем же шум?

На этой неделе (прим.пер.: в начале июня 2014 года) компания Docker выпустила версию 1.0 своего продукта (подробнее об версии 1.0 можно прочитать здесь), и все это произошло на конференции DockerCon. Основатель и технический директор компании Docker, Соломон Хайкс (Solomon Hykes) сообщил, что проект с открытым кодом Docker был загружен (бесплатно) более 2.75 миллиона раз и более чем 460 участников проекта помогли создать эту версию. Компания Docker создала для поддержки своего продукта партнерские компании, и сервис-провайдеры для того, чтобы не отстать, «прыгают на борт» и предлагают сервисы Docker.

Виртуальные машины

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

Docker

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

Откуда взялись контейнеры?

Контейнеры, в частности контейнеры Linux, не новы. Такие технологические гиганты, как Oracle, HP и IBM, пользуются контейнерами на протяжении десятилетий. Но в последние годы в качестве альтернативы или дополнения к уже имеющимся решениям виртуализации стал популярным проект с открытым исходным кодом Docker. С целью поддержки проекта с открытым исходным кодом на рынке появилась компания dotcloud, которая затем была переименована в компанию Docker. В январе компания получила финансирование в размере $ 15 млн. от венчурного фонда Greylock Partners. В компанию крупные инвестиции также внесла компания Red Hat. Подробнее о сотрудичестве Red Hat с Docker читайте здесь.

Как это работает?

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

В Docker-е, как коммерческом продукте, есть две основные составляющие, а именно: движок Docker, который является основой программной платформы, позволяющей пользователям создавать и использовать контейнеры; и концентратор Docker Hub, представляющего собой сервис на основе SaaS, используемый для создания и совместного использования сервисов Docker. В компании говорят, что после того, как была выпущена версия 1.0 и Docker Hub, с ее контейнерами можно использовать более 14000 приложений.

Контейнеры уничтожат виртуальные машины?

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

Сколько это стоит?

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

Кому еще это интересно?

Многим высокотехнологичным компаниям интересно узнать, что они в действительности могут получить из всего этого шума вокруг Docker. Компания Docker наращивает свои партнерские отношения. Коммерческая версия Docker поставляется как с поддержкой от самой компании, так и в виде интеграции с различными другими программными платформами, в том числе и с дистрибутивами Linux от Red Hat, SuSE и Ubuntu, и с другими сервисами, например, инструментальными средствами планирования, такими как Puppet, Chef, Ansible и Jenkins.

Некоторые сервис-провайдеры устанавливают Docker на своих платформах. Технический директор компании Rackspace Джон Ингейтс (John Engates), например, пишет в блоге о том, что первоначально он и его компания, предоставляющая облачный сервис, была не сильно впечатлена возможностями Docker. Но после того, как клиенты начали им пользоваться и попросили компанию Rackspace поддерживать Docker, компания, как говорит Ингейтс, "была вовлечена" в сообщество. Теперь, они среди новообращенных; Ингейтс называет контейнеризацию «виртуализацией следующего поколения».

В Rackspace технология Docker используется для тестирования и развертывания новых приложений в разнообразных средах; она используется даже организации сети, т.к. позволяет выполнять балансировку нагрузки при передаче сетевых ресурсов в аренду сразу нескольким пользователям. Хотя, по его словам, наибольший выигрыш от использования контейнеров можно получить при переходе к балансировке рабочих нагрузок между различными средами. «Docker может предложить абстракцию, которая делает возможной переключение нагрузки между облаками. ок с одновременной заменой рабочей среды. Либо это не будут облака OpenStack. Виртуализация на уровне ОС делает приложение независимым от базовой инфраструктуры. Docker может позволить существовать небольшим рынкам облачных вычислений и дает пользователям возможность находить наиболее подходящее для них решение».

Он перечислил несколько способов, с помощью которых в случае, если это интересно, можно влиться в сообщество Docker.