3. Что будет в докладе
○ Проблемы грузоперевозок
○ Что такое контейнер
○ Докер
○ Его роль для контейнеров
○ Его роль для инфраструктуры
○ Его роль в отношениях Dev’a и OPS’a
○ Контейнеры сегодня
○ Приложение
○ Виртуалка
○ Жир - кто как борется с ним
5. Чего не будет в докладе
○ Скучных примеров кода
○ Интересных примеров кода
6. Чего не будет в докладе
○ Скучных примеров кода
○ Интересных примеров кода
○ Примеров кода
7. Что будет в докладе
○ Проблемы грузоперевозок
○ Что такое контейнер
○ Докер
○ Его роль для контейнеров
○ Его роль для инфраструктуры
○ Его роль в отношениях Dev’a и OPS’a
○ Контейнеры сегодня
○ Приложение
○ Виртуалка
○ Жир - кто как борется с ним
18. Что будет в докладе
○ Проблемы грузоперевозок
○ Что такое контейнер
○ Докер
○ Его роль для контейнеров
○ Его роль для инфраструктуры
○ Его роль в отношениях Dev’a и OPS’a
○ Контейнеры сегодня
○ Приложение
○ Виртуалка
○ Жир - кто как борется с ним
26. Что будет в докладе
○ Проблемы грузоперевозок
○ Что такое контейнер
○ Докер
○ Его роль для контейнеров
○ Его роль для инфраструктуры
○ Его роль в отношениях Dev’a и OPS’a
○ Контейнеры сегодня
○ Приложение
○ Виртуалка
○ Жир - кто как борется с ним
30. Кто ты, Docker?
○ Попытка захватить мир
○ Новый пакетный менеджер для Linux
31. Кто ты, Docker?
○ Попытка захватить мир
○ Новый пакетный менеджер для Linux
○ Технология упаковки и доставки приложения
32. Кто ты, Docker?
○ Попытка захватить мир
○ Новый пакетный менеджер для Linux
○ Технология упаковки и доставки приложения
“упаковать, отправить и запустить любое приложение в виде легкого
портативного самодостаточного контейнера LXC, который может
работать практически в любом месте” (Джеймс Боттомли,
технический директор Parallels)
33. Что будет в докладе
○ Проблемы грузоперевозок
○ Что такое контейнер
○ Докер
○ Его роль для контейнеров
○ Его роль для инфраструктуры
○ Его роль в отношениях Dev’a и OPS’a
○ Контейнеры сегодня
○ Приложение
○ Виртуалка
○ Жир - кто как борется с ним
37. Что будет в докладе
○ Проблемы грузоперевозок
○ Что такое контейнер
○ Докер
○ Его роль для контейнеров
○ Его роль для инфраструктуры
○ Его роль в отношениях Dev’a и OPS’a
○ Контейнеры сегодня
○ Приложение
○ Виртуалка
○ Жир - кто как борется с ним
40. Что будет в докладе
○ Проблемы грузоперевозок
○ Что такое контейнер
○ Докер
○ Его роль для контейнеров
○ Его роль для инфраструктуры
○ Его роль в отношениях Dev’a и OPS’a
○ Контейнеры сегодня
○ Приложение
○ Виртуалка
○ Жир - кто как борется с ним
48. Что будет в докладе
○ Проблемы грузоперевозок
○ Что такое контейнер
○ Докер
○ Его роль для контейнеров
○ Его роль для инфраструктуры
○ Его роль в отношениях Dev’a и OPS’a
○ Контейнеры сегодня
○ Приложение
○ Виртуалка
○ Жир - кто как борется с ним
52. Что будет в докладе
○ Проблемы грузоперевозок
○ Что такое контейнер
○ Докер
○ Его роль для контейнеров
○ Его роль для инфраструктуры
○ Его роль в отношениях Dev’a и OPS’a
○ Контейнеры сегодня
○ Приложение
○ Виртуалка
○ Жир - кто как борется с ним
58. Coming soon
Tech battle #8: ?
Follow us and
stay tuned about future events
facebook.com/mindklab
instagram.com/mindklab
twitter.com/mindklab
linkedin.com/company/mindk
Notas del editor
Чего не будет в этом докладе:
-в нем не будет скучных примеров кода
Чего не будет в этом докладе:
-в нем не будет скучных примеров кода
-интересных примеров кода
Чего не будет в этом докладе:
-в нем не будет скучных примеров кода
-интересных примеров кода
-в докладе вообще не будет примеров кода
Опустить ниже. Поиграть с размером шрифта
А начать хотелось бы с проблемы. Проблемы деплоя приложения - это сложно,- это печаль и боль.
Кто то уже проходил через это, у кого то это впереди, но деплой приложения на продакшн.
Как часто бывает, что локально мы разрабатываем приложение. Долго разрабатываем. Все работает отлично на локальном.
А когда заливаем код на продакшен - наступает час пик. Не обязательно на продакшене, на компьютере коллеги,
Первые мысли - ВАТ? Что произошло? Почему у Васи все норм? Почему я? Самое грустное в этой истории - если это конечный пользователь не ваш коллега, а клиент.
Давайте рассмотрим предысторию, причины того, почему так происходит.
В верхней части находится набор разных стеков приложений. Ну какие стеки
Внизу где это может потребоваться запустить. Вы можете разрабатывать на своем ноутбуке,и совсем не хотите бегать и рассказывать коллегам как все настраивать.
Это можно показать в матрице (матрица сна).Чтобы спать спокойно, Опсу нужно знать как правильно доставить/настроить приложение на каждый отдельно взятый сервер. Предусмотреть все нюансы и подводные камни. Как это лучше, а главное правильно, сделать, пока не понятно.
Вернемся в прошлый век. Около сотни лет назад человечество столкнулось с похожей проблемой - доставка груза. Есть разные виды грузов, разных габаритов - машина, кофе, фортепьяно.
И находится они могут на разных складах, доставляться разными методами - паровозом, грузовиком, краном.
И такая же матрица. И тут нужно понимать - что как доставить груз это проблема одного человека. Заказчику все равно, как он будет доставлен, главное чтобы в целости и сохранности, без изъянов.
Тогда на помощь пришли контейнеры.
Это был прорыв на новый, более качественный уровень грузоперевозок.
Контейнер позволяет ставить рядом несовместимое. Помните загадку про “перевезти волка,зайца и капусту на другой берег”? Ответ - перевозите их в контейнерах.
Возникает вопрос, почему бы по аналогии не осуществлять доставку ПО?
Это был прорыв на новый, более качественный уровень грузоперевозок.
Контейнер позволяет ставить рядом несовместимое. Помните загадку про “перевезти волка,зайца и капусту на другой берег”? Ответ - перевозите их в контейнерах.
Возникает вопрос, почему бы по аналогии не осуществлять доставку ПО?
Так что же такое контейнеры. Когда произносят это слово, многие представляют это контейнер для доставки груза. Кстати, у меня именно такой был первый дачный домик. У наших соседей тоже. У соседей соседей тоже.
Ну а если вы домохозяйка - то скорее всего вы представляете такой контейнер. На самом деле в таких контейнерах удобно носить обеды на работу.
Ну а если у вас есть дети, то скорее всего - такой контейнер.
На если вы домохозяйка, с дачей и детьми, то в скорее всего все три контейнера. Так сказать - стек контейнеров.
Но сегодня мы собрались поговорить об АйТишных контейнерах. О software контейнерах. В интернете можно найти разные определения контейнеров - как дата тайп, как тип теории, гуи контейнер. И только одна статья о контейнерах как виде виртуализации. Именно о таких и будем говорить.
Если определение на слайде вам не понятно - не расстраивайтесь, мне тоже. Но разобраться хотелось
Если обратиться к истории контейнеров, то контейнер не новость. В той же статье на википедии, если ссылка на то что первая имплементация контейнеров - chroot (1982).
Но главными революционерами были Vituozzo, в 2001году. Позже они выдали в опенсоурс свой продукт ОпенВЗ.
Контейнеры основываются на двух примитивах/китах - неймспесы (пространство имен) и цгрупс (контрольные групы)
Цгрупс позволяет - ядерная подсистема которая позволяет объединять процессы в группы и прикреплять к этим группам определенные контроллеры, которые позволяют администратору определять кто как будет употреблять системные ресурсы - цпу, память, сетвую пропускную способность и т.д.
фича линукса для ограничения, контроля и изолирования ресурсов без необходимости запуска виртуальной машины. То есть вы даете приложению столько ресурсов сколько хотите дать. Как простой пример - вы можете возможное ограничть количество памяти контейнеру.
Вторая тоже объединяла процессы в группы и позволяет делать так чтобы группы процессов по одним идентификаторам видеть разные группы разные объекты.
дает возможность полностью изолировать приложения от операционной системы, включая дерево процессов, сеть, файловую систему, пользователей и т.д
По сути изоляция+ограничение это и есть контейнер.
Но такой способ не являлся простым и тривиальным в использовании. А хочеться что бы было все попроще. И это желание аля проблемма было не единичным. Этому городу нужен герой!
И оно появилось. Докер, который добавил к технологии контейнерной виртуализации возможность запаковать приложение и запустить его в контейнере. Дальше-больше. Сегодня контейнер называют способ запаковать приложение со всеми его зависимостями и запустить в отдельном окружении. То есть сегодня контейнером называют докер.
Но на самом деле докер это не контейнер. Докер, сначала был оберткой над LXC.
Но однажды произошел произошел редизайн внутри ядра линукс, где что-то изменили, что-то улучшили. Докер отказался, так сказать, от посредника и стал использовать напрямую технологии ядра. На самом деле они разработали абстракцию которая позволила им использовать различные исполняемые среды.
Так кто же ты такое докер? Какое можно дать определение докеру?
Это попытка захватить мир. Если вы не слышали о докере, вы давно не выходили на улицу, не платили за интернет. Он везде, он повсюду.
Вам нужно запустить офис? Браузер? Вам нужно установить только докер, а он сделает все за вас. Вам больше не нужно ставить кучу разных пакетов, только докер, только хардкор.
докер - упаковка и доставка приложения на базе контейнерных технологий.
Еще слышал такие объяснения - как “докер это как вагрант”, “докер это хрень”. и “докер это тулза для админов, чтобы они могли выпендриваться”.
Но пожалуй главное определение докера - упаковка и доставка приложения на базе контейнерных технологий.
Можно подытожить: сегодня, контейнер это приложение.
А кто смотрел Трансформеры? Да наверное все смотрели. Помните сцену с матрицей лидерства, там где парнишка вроде как умер. И тут появляются все прайды - и такие ему: матрицу лидерства нельзя найти, её можно только заслужить. Это всегда было, есть и будет твоим предназначением. И потом он оживает сам и оживляет Оптимуса. Крутая сцена.
Это я к чему.
Всегда были,есть и будут люди которые считают что контейнер/докер это виртуалка.
Поэтому сегодня, контейнеры нужно рассматривать как 2 направления:- это приложение
Это виртуалка
Начнем с первого варианта - контейнер это приложение. Опять же, вспоминая ранее сказанное, именно докер принес такую философию, что один контейнер = один процес.
У меня жена работает БА и это как бы её не должно касаться, но пару лет фанатеет от контейнеров. Особенно от этого концепта. Поэтому, наверное, как вы поняли, у нас в холодильнике всегда есть контейнер с картошечкой, контейнер с салатиком и т.д.
Один конейнер - один процес, один сервис. А что если этих “одних сервисов” у нас много?
А это значит, что нам нужно смотреть в сторону микросервисной инфраструктуры.
И на самом деле так и было, как только докер вошел в массы, сразу за ним в массы вошла и микросервисая инфраструктура.
Да, в самом начале было много холиваров - что есть хорошо, что есть плохо. Поклонники радовались, говорили “микросервисы - это круто”. остальные говорили - что да, это круто, но у нас получилось ещё хуже чем было.
Но на фоне парадигмы контейнер=приложение это выглядит как "Отказоустойчивость", "распределенность", "масштабируемость"
С появлением докера изменилось
Все знают, что разработчики любят писать код и не любят разбираться в администрировании серверов.
Все знают - у меня локально все работает. Разбирайся что не так. После этой фразы прям жалеешь, что не ходил на бокс...
Но как не крути, если такое происходит - это реальный факап, реальный УПС.
Получается, что теперь разработчик может сделать приложение, запаковать его. И отдать админу.
Админ его дальше доставляет по назначению. Оно начинает работать. все довольны. Профит.
Можно идти пить пиво.
Но на самом деле не все довольны. Остается настраивать такие вещи мониторинг, бэкапы, апдейты,настройка сети и т.д. Это не просто. Но вокруг докера начали появляться другие проэкты, которые помогают в тонкой конфигурации. В принципе докер признает эти проблемы, пытаются решить их поддерживая смежные проекты.
Это наглядные пример, того что может быть если у вас с женой один ноутбук.На самом деле не просто - это Снежана Игоревна и Смайлик. Снежану мы взяли из приюта. Она была дворянских кровей,а спустя год мы узнали, что она породистая. А после Смайлика в гостях постоянно находим бублики спрятанные в разных местах - подушка, пододеяльник.
Контейнеры и Вмки - одинаковы в
Очень часто когда сравнивают вм и контейнер приводят аналогию с домом и общежитием. Дом, эта такая классная цх этажная штука где живет семья из трех человек. У каждого есть свой туалет, балкон. гараж и т.д. Вокруг дома 4г города, куча цветников, барбекю и качельки.
Общежитие - это один этаж на 20 человек.все они между собой делят туалет, кухню, душ. Общая система винтеляции.ну в общем все общее.
Контейнер - это общее железо, общее ядро.Дальше свой набор библиотек.
Виртуалка - пожирнее. Железо, ядро, виртуальное железо, виртуальное ядро.а дальше набор библиотек
То есть у вируталки по сравнению с контейнером есть хороший такой жирок. Благодаря этому жиру виртуалка долго встает, виртуалок может меньше поместиться на площадке. Грубо говоря там где могут жить 100 контейнеров, около 10 вм может поместиться.
Это в принципе все
Если вспомнить что контейнрам чуток больше 10лет. То Виртуальный машины это, так сказать, старший брать.намного старше.
Возникает вопрос, неужели зная о жире больше чем 10 лет, никто не пытался его сбросить?
А вот и да - пытались.на самом деле таких технологий не много, но они есть.
Сейчас хоть и осень, но с жиром можно и нужно бороться. Вариантов несколько.
Паравиртуализация. Существует давно. Она объясняет гостевому ядру, что она работает в гипервизоре, не нужно загружать стандартные драйвера. Если нужно сделать специальный вызов к хипервизор и он его обработает быстрее по сравнению если обращаться к виртуальному железу.
Прокси ядра - разработчики изменили ядро, так что часть функций это ядро выполняет внутри себя,а часть функций отдает ядру запущенному на хосте.
Проанализировали уязвимости в ядрах линукс, как оказалось большое их количество находится в слоях отвечающих за коммуникацию с системными библиотеками
А код который отвечает за дисковый планировщик, сетевой стек, драйвера файловых систем - в них уязвимостей практически нет.
Юникернелс пошла ещё дальше. Если мы отказались от гостевого железа, почему бы не отказаться от гостевого ядра?
Технология которая приблизилась к контейнерам.
Её библиотеку нужно собирать под конкретное приложение.