Оснастите свои доки кранами
Павел Емельянов
Москва, 2014
2
О чём речь
Несколько слов о CRIU вообще
И ещё несколько о CRIU-1.3.1
CRIU + Docker: скрестить коня и трепетную лань
Что дальше?
3
Что такое CRIU?
Checkpoint-Restore In Userspace
Процессыи
окружение
Checkpoint/
Dump
Restore/
Restart
Наборфайлов-образов
4
Что такое CRIU? (продолж.)
Начался ~3 года назад
После 2-х летней осады сообщества Linux Kernel с патчами для in-kernel реализации
Вместо 100+ патчей на всё ядро – небольшое их количество, расширяющих только user API
В 3.11 есть всё, что нужно для нормальной работы
5
Для чего он нужен
Живая миграция
“Незаметное” обновление ядра
Ускорение долгого старта приложений
Периодические снимки состояний (HPC)
Продвинутая отладка и тестирование
Присадки к screen/tmux
Кнопка save
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!
7
Docker
В Google нужны контейнеры и живая миграция
Для контейнеров – Docker
Для миграции – CRIU
8
Сценарий 1
Dockerdaemon
CT2
CT1
CT3
Dockerdaemon
Host 1 Host 2
CT1
9
Сценарий 2
Dockerdaemon
CT2
CT1
CT3
Host 1 Host 2
Dockerdaemon
CT2
CT1
CT3
10
Что для этого нужно
“Починить” AUFS, который портит имена файлов
Поддержать bind mounts внешних файлов внутрь контейнера
Прикрепить контейнер к новому Docker-демону
Поддержать вложенные PID-namespaces
11
Что из этого сделано
+ “Починить” AUFS, который портит имена файлов
+ Поддержать bind mounts внешних файлов внутрь контейнера
+ Прикрепить контейнер к новому Docker-демону
– Поддержать вложенные PID-namespaces
12
Как это будет выглядеть
Dockerdaemon
CT2
CT1
CT3
DockerCLI
dump $idrestore $id
-t $ct_root_pid-D /var/lib/docker/$ct/...
13
Где посмотреть
file://$criu_sources/contrib/docker_cr.sh
https://github.com/docker/libcontainer/pull/204
http://criu.org/Docker
14
Что дальше?
Merge 204th pull
Поддержать user-namespaces
Сделать живую миграцию по-человечески
Живая миграция != dump + copy + restore Проект Пихль / P.Haul https://github.com/xemul/p.haul
15
Где живёт проект
http://criu.org
http://git.criu.org
+CRIU page