SlideShare una empresa de Scribd logo
1 de 70
Docker & Badoo:
никогда не останавливайся на
достигнутом
Антон Турецкий
Системный инженер, Badoo
@tyrchenok
Citius, altius, fortius!
• 300 000 000 пользователей
• ~ 3000 серверов
• 200 из 250 Docker хостов
• 1046 запущенных контейнеров
Docker: Why..?
Single Environment
Docker: Why..?
Single Environment
Monolithic
Docker: Why..?
Single Environment
Monolithic
Rollback guarantee
Docker: Why..?
Single Environment
Monolithic
Rollback guarantee
Resource utilisation
Docker main thing
Docker storage driver
AuFS
Out of kernel
Share memory
Docker storage driver
AuFS
Out of kernel
Share memory
Devicemapper
In mainline kernel
Knows everyone
Docker storage driver
AuFS
Out of kernel
Share memory
Devicemapper
In mainline kernel
Knows everyone
BTRFS
In mainline kernel
Docker storage driver
AuFS
Out of kernel
Share memory
Devicemapper
In mainline kernel
Knows everyone
BTRFS
In mainline kernel
ZFS
Kernel module
Stability
Docker storage driver
AuFS
Out of kernel
Share memory
Devicemapper
In mainline kernel
Knows everyone
BTRFS
In mainline kernel
ZFS
Kernel module
Stability
OverlayFS
Kernel >= 3.18
Fast
Device Mapper
(theory)
• CoW on block level
Device Mapper
(theory)
• CoW on block level
• Each container/image gets its own block device
Device Mapper
(theory)
• CoW on block level
• Each container/image gets its own block device
• Snapshot at any given time
Device Mapper
(in practice)
• Mountpoint is only mounted when the container is running
Device Mapper
(in practice)
• Mountpoint is only mounted when the container is running
• The data is stored in two files: data & metadata
Device Mapper
(in practice)
• Mountpoint is only mounted when the container is running
• The data is stored in two files: data & metadata
• Docker puts data and metadata on a loop device backed by a
sparse file
Device Mapper
(in practice)
• Mountpoint is only mounted when the container is running
• The data is stored in two files: data & metadata
• Docker puts data and metadata on a loop device backed by a
sparse file
Example about performance
Device Mapper
(на деле)
Device Mapper
(на деле)
• Развалилось довольно быстро
Device Mapper
(на деле)
• Развалилось довольно быстро
• Идём дальше!
BTRFS
BTRFS
(theory)
• CoW at the filesystem level
BTRFS
(theory)
• CoW at the filesystem level
• Create subvolume like mkdir :)
BTRFS
(theory)
• CoW at the filesystem level
• Create subvolume like mkdir :)
• Docker root must be BTRFS filesystem
BTRFS
(theory)
• CoW at the filesystem level
• Create subvolume like mkdir :)
• Docker root must be BTRFS filesystem
• Snapshot at any given time
BTRFS
(in practice)
• Mountpoint should be present even if the container
is not running
BTRFS
(in practice)
• Mountpoint should be present even if the container is
not running
• Performance ~ native/2 (data goes to the journal first)
BTRFS
(на деле)
Неподготовленному пользователю
крайне не рекомендуется трогать
btrfs tools
“Наши руки не для скуки!”
BTRFS
(на деле)
• Единственное нормально
работающее (~ 1.5 года назад)
BTRFS
(на деле)
• Единственное нормально
работающее
• Мы живём с этим уже 2+ года!
OverlayFS
(in practice)
• Performance ~ native
OverlayFS
(in practice)
• Performance ~ native
• Use the same EXT partition
OverlayFS
(in practice)
• Performance ~ native
• Use the same EXT partition
• Native tools for manage
OverlayFS
(keep in mind)
• high inode usage
• module called “overlay”
Грабли: docker pull
Грабли: docker pull
(результат)
• Падение docker демона
Грабли: docker pull
(результат)
• Падение docker демона
• “Радость”
Operations Team
Грабли: docker pull
(результат)
Лучший патч, что я видел!
Misc
EXT4 hardlink limit
65 534
Error response from daemon: could not find image: no such id: b33b7
Что мы еще сделали?
Monitoring container, который шлёт статистику в Graphite
Что мы еще сделали?
docker_build
для сборки образов в (полу-
)автоматическом режиме
Что мы еще сделали?
Docker для сборки RPM (мы знаем про OBS, да)
Что мы еще сделали?
Docker для сборки RPM (мы знаем про OBS, да)
- запуск “свежего” образа
- установка зависимостей
- сборка по spec файлу
- получили пакет
Что мы еще сделали?
**baDocker – оркестрация (в вечной разработке)
baDocker
Что у нас есть/было? Что хотели?
baDocker
Что у нас есть/было?
• Сервисы и их типы
• Версии
• Серверы
Что хотели?
baDocker
Что у нас есть/было?
• Сервисы и их типы
• Версии
• Серверы
Что хотели?
Стоп/Старт
Обновление
Всякое разное
и WebUI
• Client Less
• Client Less
• Get/Set data
via
docker API
• Client Less
• Get/Set data
via
docker API
• Монстр!
baDocker #2
• Что изменилось?
• Почему так?
baDocker #2
• Docker socket: упрощаем
взаимодействие
baDocker #2
• Docker socket: упрощаем
взаимодействие
• Puppet Facts: они уже есть
baDocker #2
• Docker socket: упрощаем
взаимодействие
• Puppet Facts: они уже есть
• Как это теперь работает?
Зачем всё это было?
• Видим цель – идём к ней!
Зачем всё это было?
• Видим цель – идём к ней!
• Чужой опыт – это полезно!
Зачем всё это было?
• Видим цель – идём к ней!
• Чужой опыт – это полезно!
• Можешь лучше – сделай!
Вопросы?
Антон Турецкий
a.turetsky@corp.badoo.com
@tyrchenok
@BadooDev
http://habrahabr.ru/company/badoo/
https://tech.badoo.com/
предыдущие доклады про Docker: https://goo.gl/KcIhwG

Más contenido relacionado

La actualidad más candente

Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Ontico
 
Евгений Потапов (Сумма Айти)
Евгений Потапов (Сумма Айти)Евгений Потапов (Сумма Айти)
Евгений Потапов (Сумма Айти)
Ontico
 
Депрокрастинируем Docker: контейнеры здесь и сейчас
Депрокрастинируем Docker: контейнеры здесь и сейчасДепрокрастинируем Docker: контейнеры здесь и сейчас
Депрокрастинируем Docker: контейнеры здесь и сейчас
Ruslan Sharipov
 
Юрий Насретдинов, Badoo
Юрий Насретдинов, BadooЮрий Насретдинов, Badoo
Юрий Насретдинов, Badoo
Ontico
 
ekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилищеekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилище
it-people
 
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
Ontico
 
Aviasales: миграция поискового движка в docker / Дмитрий Кузьменков (Aviasales)
Aviasales: миграция поискового движка в docker / Дмитрий Кузьменков (Aviasales)Aviasales: миграция поискового движка в docker / Дмитрий Кузьменков (Aviasales)
Aviasales: миграция поискового движка в docker / Дмитрий Кузьменков (Aviasales)
Ontico
 
DC/OS – больше чем PAAS, Никита Борзых (Express 42)
DC/OS – больше чем PAAS, Никита Борзых (Express 42)DC/OS – больше чем PAAS, Никита Борзых (Express 42)
DC/OS – больше чем PAAS, Никита Борзых (Express 42)
Ontico
 
Где живут Ваши объявления / Тюрин Михаил (Avito)
Где живут Ваши объявления / Тюрин Михаил (Avito)Где живут Ваши объявления / Тюрин Михаил (Avito)
Где живут Ваши объявления / Тюрин Михаил (Avito)
Ontico
 
Кит на службе у человека microPaaS Deis / Алексей Медведчиков (2ГИС)
Кит на службе у человека microPaaS Deis / Алексей Медведчиков (2ГИС)Кит на службе у человека microPaaS Deis / Алексей Медведчиков (2ГИС)
Кит на службе у человека microPaaS Deis / Алексей Медведчиков (2ГИС)
Ontico
 

La actualidad más candente (20)

Андрей Ситник
Андрей СитникАндрей Ситник
Андрей Ситник
 
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
 
Евгений Потапов (Сумма Айти)
Евгений Потапов (Сумма Айти)Евгений Потапов (Сумма Айти)
Евгений Потапов (Сумма Айти)
 
Депрокрастинируем Docker: контейнеры здесь и сейчас
Депрокрастинируем Docker: контейнеры здесь и сейчасДепрокрастинируем Docker: контейнеры здесь и сейчас
Депрокрастинируем Docker: контейнеры здесь и сейчас
 
Мой маленький уютный PaaS / Илья Беда (bro.agency)
Мой маленький уютный PaaS / Илья Беда (bro.agency)Мой маленький уютный PaaS / Илья Беда (bro.agency)
Мой маленький уютный PaaS / Илья Беда (bro.agency)
 
Юрий Насретдинов, Badoo
Юрий Насретдинов, BadooЮрий Насретдинов, Badoo
Юрий Насретдинов, Badoo
 
Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)
Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)
Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)
 
Пряморукий DNS: делаем правильно / Лев Николаев (Макснет)
Пряморукий DNS: делаем правильно / Лев Николаев (Макснет)Пряморукий DNS: делаем правильно / Лев Николаев (Макснет)
Пряморукий DNS: делаем правильно / Лев Николаев (Макснет)
 
Облако в Badoo год спустя
Облако в Badoo год спустяОблако в Badoo год спустя
Облако в Badoo год спустя
 
ekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилищеekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилище
 
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
 
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
 
Денис Иванов
Денис ИвановДенис Иванов
Денис Иванов
 
High Load
High LoadHigh Load
High Load
 
Aviasales: миграция поискового движка в docker / Дмитрий Кузьменков (Aviasales)
Aviasales: миграция поискового движка в docker / Дмитрий Кузьменков (Aviasales)Aviasales: миграция поискового движка в docker / Дмитрий Кузьменков (Aviasales)
Aviasales: миграция поискового движка в docker / Дмитрий Кузьменков (Aviasales)
 
DC/OS – больше чем PAAS, Никита Борзых (Express 42)
DC/OS – больше чем PAAS, Никита Борзых (Express 42)DC/OS – больше чем PAAS, Никита Борзых (Express 42)
DC/OS – больше чем PAAS, Никита Борзых (Express 42)
 
Где живут Ваши объявления / Тюрин Михаил (Avito)
Где живут Ваши объявления / Тюрин Михаил (Avito)Где живут Ваши объявления / Тюрин Михаил (Avito)
Где живут Ваши объявления / Тюрин Михаил (Avito)
 
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Использование Hadoop в Badoo, Валерий Старынин (Badoo)Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
 
Мониторь, автоматизируй Docker
Мониторь, автоматизируй DockerМониторь, автоматизируй Docker
Мониторь, автоматизируй Docker
 
Кит на службе у человека microPaaS Deis / Алексей Медведчиков (2ГИС)
Кит на службе у человека microPaaS Deis / Алексей Медведчиков (2ГИС)Кит на службе у человека microPaaS Deis / Алексей Медведчиков (2ГИС)
Кит на службе у человека microPaaS Deis / Алексей Медведчиков (2ГИС)
 

Destacado

Destacado (13)

Simple layouts for ECKD and zfcp disk configurations on Linux on System z
Simple layouts for ECKD and zfcp disk configurations on Linux on System zSimple layouts for ECKD and zfcp disk configurations on Linux on System z
Simple layouts for ECKD and zfcp disk configurations on Linux on System z
 
Operating system 11.10.2016 adarsh bang
Operating system 11.10.2016 adarsh bangOperating system 11.10.2016 adarsh bang
Operating system 11.10.2016 adarsh bang
 
Jireh ict
Jireh ictJireh ict
Jireh ict
 
Linux O(1) Scheduling
Linux O(1) SchedulingLinux O(1) Scheduling
Linux O(1) Scheduling
 
Intro to cluster scheduler for Linux containers
Intro to cluster scheduler for Linux containersIntro to cluster scheduler for Linux containers
Intro to cluster scheduler for Linux containers
 
LCU13: Power-efficient scheduling, and the latest news from the kernel summit
LCU13: Power-efficient scheduling, and the latest news from the kernel summitLCU13: Power-efficient scheduling, and the latest news from the kernel summit
LCU13: Power-efficient scheduling, and the latest news from the kernel summit
 
React native
React nativeReact native
React native
 
Scheduling In Linux
Scheduling In LinuxScheduling In Linux
Scheduling In Linux
 
Linux scheduler
Linux schedulerLinux scheduler
Linux scheduler
 
Process scheduling linux
Process scheduling linuxProcess scheduling linux
Process scheduling linux
 
3. CPU virtualization and scheduling
3. CPU virtualization and scheduling3. CPU virtualization and scheduling
3. CPU virtualization and scheduling
 
The Linux Scheduler: a Decade of Wasted Cores
The Linux Scheduler: a Decade of Wasted CoresThe Linux Scheduler: a Decade of Wasted Cores
The Linux Scheduler: a Decade of Wasted Cores
 
Insider operating system
Insider   operating systemInsider   operating system
Insider operating system
 

Similar a Docker & Badoo: 
никогда не останавливайся на достигнутом

Docker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годDocker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через год
Anton Turetsky
 
Docker : что это, зачем, и как им пользоваться
Docker : что это, зачем, и как им пользоватьсяDocker : что это, зачем, и как им пользоваться
Docker : что это, зачем, и как им пользоваться
Сергей Ладыгин
 
Окружение разработчика - от виртуализации к контейнеризации
Окружение разработчика - от виртуализации к контейнеризацииОкружение разработчика - от виртуализации к контейнеризации
Окружение разработчика - от виртуализации к контейнеризации
Alexander Kirillov
 
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Ontico
 

Similar a Docker & Badoo: 
никогда не останавливайся на достигнутом (20)

Docker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годDocker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через год
 
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
 
Локальное окружение на Docker
Локальное окружение на DockerЛокальное окружение на Docker
Локальное окружение на Docker
 
Docker - счастье для хомячка или ника?
Docker - счастье для хомячка или ника?Docker - счастье для хомячка или ника?
Docker - счастье для хомячка или ника?
 
Контроль окружения сборки C++ проектов с помощью Docker. Павел Филонов. CoreH...
Контроль окружения сборки C++ проектов с помощью Docker. Павел Филонов. CoreH...Контроль окружения сборки C++ проектов с помощью Docker. Павел Филонов. CoreH...
Контроль окружения сборки C++ проектов с помощью Docker. Павел Филонов. CoreH...
 
Net core and linux in production
Net core and linux in productionNet core and linux in production
Net core and linux in production
 
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows Docker
 
Docker : что это, зачем, и как им пользоваться
Docker : что это, зачем, и как им пользоватьсяDocker : что это, зачем, и как им пользоваться
Docker : что это, зачем, и как им пользоваться
 
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs..."How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
 
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел ТихомировРазвёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров
 
Что такое Docker
Что такое DockerЧто такое Docker
Что такое Docker
 
Docker - быстро, просто, наглядно
Docker - быстро, просто, наглядноDocker - быстро, просто, наглядно
Docker - быстро, просто, наглядно
 
Окружение разработчика - от виртуализации к контейнеризации
Окружение разработчика - от виртуализации к контейнеризацииОкружение разработчика - от виртуализации к контейнеризации
Окружение разработчика - от виртуализации к контейнеризации
 
Docker в Badoo: ПМЖ или временная регистрация
Docker в Badoo: ПМЖ или временная регистрацияDocker в Badoo: ПМЖ или временная регистрация
Docker в Badoo: ПМЖ или временная регистрация
 
Docker integration into Badoo
Docker integration into BadooDocker integration into Badoo
Docker integration into Badoo
 
Windows Azure Internals
Windows Azure InternalsWindows Azure Internals
Windows Azure Internals
 
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
 
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
 
Практика разработки веб-серверов на Rust
Практика разработки веб-серверов на RustПрактика разработки веб-серверов на Rust
Практика разработки веб-серверов на Rust
 

Docker & Badoo: 
никогда не останавливайся на достигнутом