Skip to content

Latest commit

 

History

History
96 lines (60 loc) · 16.9 KB

Speech.md

File metadata and controls

96 lines (60 loc) · 16.9 KB

Docker

Компания dotCloud в 2013 начала разработку проекта Docker. Это был просто сторонний хак-проект, который начал нравиться его разработчикам, потом их друзьям, затем после выхода в свет - великому множеству ИТшников.

Спустя два года проект собрал (Слайд) 23500 звёзд на гитхабе , контибуции от тысячной армии программистов, в том числе и от презентующего, и более 45000 пакетов в хабе (Слайд), привлёк внимание всего ИТ мира, $162 миллионов инвестиций (Слайд) , основал инфраструктуру для окружающих его сотен коммерческих и опен-сурсных проектов и нажил злобного конкурента-клона Rocket. В 2014 Инвесторы были готовы вкладывать во всё, что связано с Докером (Слайд).

Докером пользуются как гиганты ИТ индустрии так и маленькие компании. Даже Майкрософт, славящийся своей нерасторопностью, к лету 2015 года представил продукты специально заточенные под Докер в своём облаке Ажур (Слайд) и объявил об усиленном сотрудничестве с компанией Докер. Про всякие там Гуглы с их Кубернетами, Амазоны с их контейнерными предложениями (Слайд) и Диджитал Оушен с поддержкой Кор ОС я вообще молчу. Докер - это текущий ИТ тренд (Слайд).

Никчёмный проект не смог бы так полюбиться прагматичной ИТ общественности. Значит, Докер делает что-то полезное, снижает издержки компаний, избавляет ИТ специалистов от боли, предотвращает выпадение волос и возникновение геморроя (Слайд).

Чтобы понять, чем действительно полезен докер, давайте сначала разберёмся в том, что это такое.

Азъ есмь

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

И тогда появились они - лекговесные контейнеры LXC (Слайд), позволяющие на ядре Линукс выше версии 2.6.24 обособлять группы процессов и накладывать различные ограничения доступа и ресурсопотребляемости на эти группы.

Parallels

Характерно, что Докер - была не первой компанией, копавшей в этом направлении. Пальма первенства принадлежит сосисочной Российско-Американской компании Parallels. (Слайд) Они с давних пор активно работали над созданием технологии по духу близкой к LXC, проталкивали свои патчи в ядро Линукс, но упустили, по моему скромному мнению, самый важный в жизни компании момент. А Докер не сплоховал, перехватил инициативу и сделал всё правильно.

Что же так манит ИТ сообщество в Докере? Это набор свойств технологии, который, при разных способах применения, даёт разные эффекты, приятные тем или иным группам специалистов.

Фичи Докера

Создатели Докера поверх контейнеров LXC добавивили целую экосистему абстракций, форматов, программных решений и сервисов, облегчающих работу с конейнерами:

  • файловую систему, поддерживающую версионирование состояний
  • формат контейнеров содержащих в себе эту файловую систему и позволяющий уменьшать размеры передаваемой и хранимой информации за счёт использования уже собранных частей (слоёв) контейнеров
  • систему версионирования контейнеров
  • формат файлов описания контейнеров, позволяющий верифицируемым образом автоматически пересобирать и переконфигурировать контейнеры
  • протоколы взаимодействия контейнеров с хостовой ОС и другими контейнерами
  • централизованный масштабируемый высокодоступный репозиторий для хранения и раздачи контейнеров всем желающим
  • клиентские программы для работы с контейнерами в Линуксе и комплексные решения для работы с контейнерами в Mac и Windows
  • программы для управления жизненным циклом комплексных приложений, состоящих из множества взаимодействующих контейнеров
  • отличную документацию по всему этому хозяйству и умелое управление инфраструктурой и организованную работу с сообществом

Для чего использовать эти фичи

  1. Возможность обосабливать группу процессов и файловую систему, дающая эффект легковесной виртуальной машины. Такая ВМ мгновенно запускается, мгновенно останавливается и не занимает на диске практически никакого места (до момента записи загруженных извне или сгенерированных данных). Величина размера потребляемой памяти равна величине размера требуемой для работающих в контейнере процессов памяти. Никакого оверхеда, никаких memory baloons (утончённые любители VMWare ESX поймут меня). Применения:
  • Замена конвенциональных ВМ там, где это возможно
  • Тестирование, разработка системных решений
  • Запуск целых экосистем клиенстко-серверных приложений на одном хосте с целью обучения и тестирования
  • Сборка единого контейнера для тестирования, стейджинга и продакшена
  1. Эта же возможность даёт другой эффект, поскольку процессы изолированы и работают напрямую с ядром Линукс (а не с процессами хостового дистрибутива Линукс), то путём установки софта из произвольного дистрибутива Линукс мы можем получить достоверную копию этого Линукса, независимо от того на каком хосте запущен Докер. То есть на хостовой Убунте мы можем в контейнере Докер запустить Рэд Хэт, причём без сколько-нибудь заметного оверхеда по памяти, процессору и диску. Этих Ред Хэтов можно запустить десятки на одной Убунте. Каждый из них потребует пару несколько сотен милисекунд на запуск. Применения:
  • Абстрагирование от хостовой системы, где это требуется. Запуск приложений зависящих от любых дистрибутивов Линукс на одном хосте.
  • Избавление от ада зависимостей. Запуск любых приложений с конфликтующими зависимостями на одном хосте.
  • Замена Вагранта. Создание конейнеров для разработки, сборки, отладки, тестированя и продакшн-работы приложений.
  1. Файловая система, поддерживающая версионирование состояний. Применения:
  • Уменшьшение размеров контейнеров. Например, если один из уже скачанных контейнеров зависит от Убунту, то другой скачиваемый контейнер использует уже скачанные "слои" содержащие Убунту и загрузит только то, чего ещё нет на хосте
  • Облегчение деплоя приложений. Бинарное состояние деплоя: успех или провал. Один раз собранный контейнер в случае успешного деплоя гарантированно будет одинаковым везде. NPM случайно не отвалится, Puppet не вернёт ошибку инсталлятора, пара пакетов не останутся забытыми.
  1. Версионирование контейнеров.
  • Облегчение обновления и отката версий приложения.
  • Удобное управление версиями софта.
  1. Ценрализованные репозитории (в том числе и приватные) позволяют смотреть на целые системы приложений как на версионированные пакеты. Применения
  • Лёгкая дистрибуция контейнеров.
  • Лёгкий обмен настроенными open-source решениями. Открытый репозиторий hub.docker.com позволяет обмениваться любыми контейнерами. В нём можно найти контейнеры со всеми известными Linux-программами, которые имеет смысл контейниризировать.
  • Докер репозитории снижают зависимость от систем доставки пакетов (NPM, RPM, APT, etc.).
  • Приватные репозитории разрушают зависимости от внешних сервисов полностью (на этапе деплоя готовых контейнеров).
  1. Файлы описания контейнеров (Dockerfile). Применения:
  • Автоматическая сборка контейнеров. Просто как два пальца обоссфальт.
  • Верифицируемость содержимого контейнером. Не хочешь доверять автору уже собранного контейнера - пересобери сам, это очень легко.
  • Демистификация сисадминской работы. Множество готовых настроенных решений + конфигурация через скрипты = уменьшение уровня шаманства и танцев с бубном.
  • Прозрачность и версионируемость конфигураций. Невозможность внести изменения в конфигурацию без изменения скриптов.
  • Возможность отслеживать историю изменения конфигураций через систему контроля версий.
  1. Протоколы взаимодействия контейнеров с хостовой ОС и другими контейнерами. Гибкая настройка прав доступа контейнера к ресурсам хоста. Явное расшаривание директорий, девайстов хоста. Возможность установить практически любые ограничения на контейнер (количество процессов, потребление ресурсов). Применения:
  • Организация контейнерного хостинга, безопасный запуск нескольких контейнеров на одной ОС.
  • Возможность по-максимуму закрутить гайки на хосте и рулить разрешениями на докер-контейнеры.
  1. Клиентские программы для работы с контейнерами в Линуксе и комплексные решения для работы с контейнерами в Mac и Windows. С Докером легко работать как на Линукс хосте, так и на Mac OS X и Windows хостах. Собранные в одном месте контейнеры работают везде без пересборки.

  2. Программы для управления жизненным циклом комплексных приложений, состоящих из множества взаимодействующих контейнеров. За этот пока ещё не полностью занятый рынок идёт дикая борьба. Докер предоставляет базовые решения для инфраструктуры, другие компании пытаются расширить и улучшить. Мы пока что рулим инфраструктурой через простые bash файлы :)

  3. Ясные и всеобъемлющие доки, ответы на пул-реквесты и баги, выступления на конференциях - всё это поддерживается на высоком уровне и делает честь компании Докер. Это требует невероятных усилий и хорошо отлаженных процессов, но по финансовой динамике мы видим, что усилия окупаются сторицей.

  4. Докер - решение с открытым исходным кодом. Вокруг докера выстроилась целая экосистема проектов с открытым кодом. Это уменьшает риски пользователей Докера попасть под жёсткий вендор-лок.

Этот обзор не претендует на полноту, но общее впечатление о докере по состоянию на лето 2015 г. обеспечить должен.

После публикации текст считать отлитым в граните, а все баги - фичами.

CC-BY-3.0 © Evgeny Lukianchikov