15
Оснастите свои доки кранами Павел Емельянов Москва, 2014

Teach your dockers to use CRanes

Embed Size (px)

Citation preview

Page 1: Teach your dockers to use CRanes

Оснастите свои доки кранами

Павел Емельянов

Москва, 2014

Page 2: Teach your dockers to use CRanes

2

О чём речь

Несколько слов о CRIU вообще

И ещё несколько о CRIU-1.3.1

CRIU + Docker: скрестить коня и трепетную лань

Что дальше?

Page 3: Teach your dockers to use CRanes

3

Что такое CRIU?

Checkpoint-Restore In Userspace

Процессыи

окружение

Checkpoint/

Dump

Restore/

Restart

Наборфайлов-образов

Page 4: Teach your dockers to use CRanes

4

Что такое CRIU? (продолж.)

Начался ~3 года назад

После 2-х летней осады сообщества Linux Kernel с патчами для in-kernel реализации

Вместо 100+ патчей на всё ядро – небольшое их количество, расширяющих только user API

В 3.11 есть всё, что нужно для нормальной работы

Page 5: Teach your dockers to use CRanes

5

Для чего он нужен

Живая миграция

“Незаметное” обновление ядра

Ускорение долгого старта приложений

Периодические снимки состояний (HPC)

Продвинутая отладка и тестирование

Присадки к screen/tmux

Кнопка save

Page 6: Teach your dockers to use CRanes

6

Где мы сейчас

1.3 выпущено 1 сентября

– И потом 1.3.1 12-го

Способен сохранять и восстанавливать

всё, чем пользуются стандартные серверные приложение окружение (namespaces, cgroups, mountpoints), настраиваемое

утилитами OpenVZ, LXC и Docker CLI и RPC (и .so для более простого доступа к RPC)

Поддержка живой миграции

Отслеживание изменений в памяти C/R одной стороны активного TCP-соединения

Почти закончена интеграция с OpenVZ, LXC and Docker!

Page 7: Teach your dockers to use CRanes

7

Docker

В Google нужны контейнеры и живая миграция

Для контейнеров – Docker

Для миграции – CRIU

Page 8: Teach your dockers to use CRanes

8

Сценарий 1

Dockerdaemon

CT2

CT1

CT3

Dockerdaemon

Host 1 Host 2

CT1

Page 9: Teach your dockers to use CRanes

9

Сценарий 2

Dockerdaemon

CT2

CT1

CT3

Host 1 Host 2

Dockerdaemon

CT2

CT1

CT3

Page 10: Teach your dockers to use CRanes

10

Что для этого нужно

“Починить” AUFS, который портит имена файлов

Поддержать bind mounts внешних файлов внутрь контейнера

Прикрепить контейнер к новому Docker-демону

Поддержать вложенные PID-namespaces

Page 11: Teach your dockers to use CRanes

11

Что из этого сделано

+ “Починить” AUFS, который портит имена файлов

+ Поддержать bind mounts внешних файлов внутрь контейнера

+ Прикрепить контейнер к новому Docker-демону

– Поддержать вложенные PID-namespaces

Page 12: Teach your dockers to use CRanes

12

Как это будет выглядеть

Dockerdaemon

CT2

CT1

CT3

DockerCLI

dump $idrestore $id

-t $ct_root_pid-D /var/lib/docker/$ct/...

Page 13: Teach your dockers to use CRanes

13

Где посмотреть

file://$criu_sources/contrib/docker_cr.sh

https://github.com/docker/libcontainer/pull/204

http://criu.org/Docker

Page 14: Teach your dockers to use CRanes

14

Что дальше?

Merge 204th pull

Поддержать user-namespaces

Сделать живую миграцию по-человечески

Живая миграция != dump + copy + restore Проект Пихль / P.Haul https://github.com/xemul/p.haul

Page 15: Teach your dockers to use CRanes

15

Где живёт проект

http://criu.org

http://git.criu.org

+CRIU page

[email protected]