Docker & Badoo: никогда не останавливайся на достигнутом
-
Upload
anton-turetsky -
Category
Software
-
view
157 -
download
2
Transcript of Docker & Badoo: никогда не останавливайся на достигнутом
![Page 1: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/1.jpg)
Docker & Badoo: никогда не останавливайся на
достигнутом
Антон ТурецкийСистемный инженер, Badoo
@tyrchenok
![Page 2: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/2.jpg)
Citius, altius, fortius!
• 300 000 000 пользователей• ~ 3000 серверов• 200 из 250 Docker хостов• 1046 запущенных
контейнеров
![Page 3: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/3.jpg)
![Page 4: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/4.jpg)
Docker: Why..?
Single Environment
![Page 5: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/5.jpg)
Docker: Why..?
Single EnvironmentMonolithic
![Page 6: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/6.jpg)
Docker: Why..?
Single EnvironmentMonolithicRollback guarantee
![Page 7: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/7.jpg)
Docker: Why..?
Single EnvironmentMonolithicRollback guaranteeResource utilisation
![Page 8: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/8.jpg)
Docker main thing
![Page 9: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/9.jpg)
Docker storage driver
AuFSOut of kernelShare memory
![Page 10: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/10.jpg)
Docker storage driver
AuFSOut of kernelShare memory
DevicemapperIn mainline kernelKnows everyone
![Page 11: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/11.jpg)
Docker storage driver
AuFSOut of kernelShare memory
DevicemapperIn mainline kernelKnows everyone
BTRFSIn mainline kernel
![Page 12: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/12.jpg)
Docker storage driver
AuFSOut of kernelShare memory
DevicemapperIn mainline kernelKnows everyone
BTRFSIn mainline kernel
ZFSKernel moduleStability
![Page 13: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/13.jpg)
Docker storage driver
AuFSOut of kernelShare memory
DevicemapperIn mainline kernelKnows everyone
BTRFSIn mainline kernel
ZFSKernel moduleStability
OverlayFSKernel >= 3.18Fast
![Page 14: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/14.jpg)
Device Mapper(theory)
• CoW on block level
![Page 15: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/15.jpg)
Device Mapper(theory)
• CoW on block level• Each container/image gets its own block device
![Page 16: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/16.jpg)
Device Mapper(theory)
• CoW on block level• Each container/image gets its own block device• Snapshot at any given time
![Page 17: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/17.jpg)
![Page 18: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/18.jpg)
Device Mapper(in practice)
• Mountpoint is only mounted when the container is running
![Page 19: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/19.jpg)
Device Mapper(in practice)
• Mountpoint is only mounted when the container is running
• The data is stored in two files: data & metadata
![Page 20: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/20.jpg)
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
![Page 21: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/21.jpg)
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
![Page 22: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/22.jpg)
Device Mapper(на деле)
![Page 23: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/23.jpg)
Device Mapper(на деле)
• Развалилось довольно быстро
![Page 24: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/24.jpg)
Device Mapper(на деле)
• Развалилось довольно быстро• Идём дальше!
![Page 25: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/25.jpg)
BTRFS
![Page 26: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/26.jpg)
BTRFS(theory)
• CoW at the filesystem level
![Page 27: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/27.jpg)
BTRFS(theory)
• CoW at the filesystem level• Create subvolume like mkdir :)
![Page 28: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/28.jpg)
BTRFS(theory)
• CoW at the filesystem level• Create subvolume like mkdir :)• Docker root must be BTRFS filesystem
![Page 29: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/29.jpg)
BTRFS(theory)
• CoW at the filesystem level• Create subvolume like mkdir :)• Docker root must be BTRFS filesystem• Snapshot at any given time
![Page 30: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/30.jpg)
BTRFS(in practice)
• Mountpoint should be present even if the container is not running
![Page 31: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/31.jpg)
BTRFS(in practice)
• Mountpoint should be present even if the container is not running
• Performance ~ native/2 (data goes to the journal first)
![Page 32: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/32.jpg)
BTRFS(на деле)
Неподготовленному пользователю крайне не рекомендуется трогать
btrfs tools
“Наши руки не для скуки!”
![Page 33: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/33.jpg)
BTRFS(на деле)
• Единственное нормально работающее (~ 1.5 года назад)
![Page 34: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/34.jpg)
BTRFS(на деле)
• Единственное нормально работающее
• Мы живём с этим уже 2+ года!
![Page 35: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/35.jpg)
![Page 36: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/36.jpg)
OverlayFS(in practice)
• Performance ~ native
![Page 37: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/37.jpg)
OverlayFS(in practice)
• Performance ~ native• Use the same EXT partition
![Page 38: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/38.jpg)
OverlayFS(in practice)
• Performance ~ native• Use the same EXT partition• Native tools for manage
![Page 39: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/39.jpg)
OverlayFS(keep in mind)
• high inode usage
• module called “overlay”
![Page 40: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/40.jpg)
![Page 41: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/41.jpg)
Грабли: docker pull
![Page 42: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/42.jpg)
Грабли: docker pull(результат)
• Падение docker демона
![Page 43: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/43.jpg)
Грабли: docker pull(результат)
• Падение docker демона
• “Радость”Operations Team
![Page 44: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/44.jpg)
Грабли: docker pull(результат)
Лучший патч, что я видел!
![Page 45: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/45.jpg)
Misc
EXT4 hardlink limit
65 534
![Page 46: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/46.jpg)
Error response from daemon: could not find image: no such id: b33b714e8dd29b3d9d5ffde6568fc2e90b86ab9fe5aaea33fb057487df
![Page 47: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/47.jpg)
Что мы еще сделали?
Monitoring container, который шлёт статистику в Graphite
![Page 48: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/48.jpg)
Что мы еще сделали?
docker_build
для сборки образов в (полу-)автоматическом режиме
![Page 49: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/49.jpg)
Что мы еще сделали?
Docker для сборки RPM (мы знаем про OBS, да)
![Page 50: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/50.jpg)
Что мы еще сделали?
Docker для сборки RPM (мы знаем про OBS, да)
- запуск “свежего” образа- установка зависимостей- сборка по spec файлу- получили пакет
![Page 51: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/51.jpg)
Что мы еще сделали?
**baDocker – оркестрация (в вечной разработке)
![Page 52: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/52.jpg)
baDockerЧто у нас есть/было? Что хотели?
![Page 53: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/53.jpg)
baDockerЧто у нас есть/было?
• Сервисы и их типы• Версии• Серверы
Что хотели?
![Page 54: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/54.jpg)
baDockerЧто у нас есть/было?
• Сервисы и их типы• Версии• Серверы
Что хотели?
Стоп/СтартОбновлениеВсякое разное и WebUI
![Page 55: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/55.jpg)
![Page 56: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/56.jpg)
• Client Less
![Page 57: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/57.jpg)
• Client Less• Get/Set data
viadocker API
![Page 58: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/58.jpg)
• Client Less• Get/Set data
viadocker API
• Монстр!
![Page 59: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/59.jpg)
![Page 60: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/60.jpg)
![Page 61: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/61.jpg)
![Page 62: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/62.jpg)
baDocker #2
• Что изменилось?• Почему так?
![Page 63: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/63.jpg)
baDocker #2
• Docker socket: упрощаем взаимодействие
![Page 64: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/64.jpg)
baDocker #2
• Docker socket: упрощаем взаимодействие
• Puppet Facts: они уже есть
![Page 65: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/65.jpg)
baDocker #2
• Docker socket: упрощаем взаимодействие
• Puppet Facts: они уже есть
• Как это теперь работает?
![Page 66: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/66.jpg)
Зачем всё это было?
• Видим цель – идём к ней!
![Page 67: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/67.jpg)
Зачем всё это было?
• Видим цель – идём к ней!• Чужой опыт – это полезно!
![Page 68: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/68.jpg)
Зачем всё это было?
• Видим цель – идём к ней!• Чужой опыт – это полезно!• Можешь лучше – сделай!
![Page 69: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/69.jpg)
![Page 70: Docker & Badoo: никогда не останавливайся на достигнутом](https://reader037.fdocument.pub/reader037/viewer/2022102811/58efa6ff1a28abe4538b45f9/html5/thumbnails/70.jpg)
Вопросы?Антон Турецкий
[email protected]@tyrchenok@BadooDev
http://habrahabr.ru/company/badoo/https://tech.badoo.com/
предыдущие доклады про Docker: https://goo.gl/KcIhwG