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

Teach your dockers to use CRanes

Jul 10, 2015

Download

Software

Pavel Emelyanov
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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]