Upload
codefest
View
376
Download
0
Embed Size (px)
Citation preview
Docker & Badoo: никогда не останавливайся на
достигнутом
Антон ТурецкийСистемный инженер, Badoo
@tyrchenok
Citius, altius, fortius!
• 300 000 000 пользователей• ~ 3000 серверов• 200 из 250 Docker хостов• 1046 запущенных
контейнеров
Docker storage driver
AuFSOut of kernelShare memory
DevicemapperIn mainline kernelKnows everyone
BTRFSIn mainline kernel
Docker storage driver
AuFSOut of kernelShare memory
DevicemapperIn mainline kernelKnows everyone
BTRFSIn mainline kernel
ZFSKernel moduleStability
Docker storage driver
AuFSOut of kernelShare memory
DevicemapperIn mainline kernelKnows everyone
BTRFSIn mainline kernel
ZFSKernel moduleStability
OverlayFSKernel >= 3.18Fast
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
• 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
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
• Performance ~ native/2 (data goes to the journal first)
BTRFS(на деле)
Неподготовленному пользователю крайне не рекомендуется трогать
btrfs tools
“Наши руки не для скуки!”
Error response from daemon: could not find image: no such id: b33b714e8dd29b3d9d5ffde6568fc2e90b86ab9fe5aaea33fb057487df
Что мы еще сделали?
Docker для сборки RPM (мы знаем про OBS, да)
- запуск “свежего” образа- установка зависимостей- сборка по spec файлу- получили пакет
baDockerЧто у нас есть/было?
• Сервисы и их типы• Версии• Серверы
Что хотели?
Стоп/СтартОбновлениеВсякое разное и WebUI
baDocker #2
• Docker socket: упрощаем взаимодействие
• Puppet Facts: они уже есть
• Как это теперь работает?
Вопросы?Антон Турецкий
[email protected]@tyrchenok@BadooDev
http://habrahabr.ru/company/badoo/https://tech.badoo.com/
предыдущие доклады про Docker: https://goo.gl/KcIhwG