Внедрение Docker в процесс разработки
демонов
Мы используем демона
Мы используем демона
Мы используем демона
Разработка демонов ведется активно
version 2.0
Процесс деплоя очень важен
Процесс деплоя очень важен
Что может дать Docker?
Что может дать Docker?
Что может дать Docker?1. Прозрачный деплой
Что может дать Docker?1. Прозрачный деплой2. Унификация запуска
Внедрение Docker в процесс
Внедрение Docker в процесс
Внедрение Docker в процесс
Внедрение Docker в процесс
tested
Внедрение Docker в процесс
tested
Внедрение Docker в процесс
tested
Внедрение Docker в процесс
Внедрение Docker в процесс
tested
Получение tested контейнера
Демон в контейнере
Образ с демоном
- Базовый образ
Образ с демоном
- Dockerfile- Базовый образ
Dockerfile
Использование ENTRYPOINTЗапуск: $ docker run --name cont_name -e DOMAIN=a -e TYPE=2 image_name
env.sh:ln -s /path/to/config_${DOMAIN}.conf /path/to/config/daemon.confln -s /path/to/other_config_${TYPE}.conf /path/to/other_config.conf
Образ с демоном
- Файлы демона- Dockerfile- Базовый образ
Тесты и Docker
Тесты и Docker
DaemonAPI- управление демонов
- запуск- остановка- изменение конфига
- общение с демоном- посылка запросов и
получение ответа
Тесты и DockerУправление
Как было:- запуск демона
Тесты и DockerУправление
Как стало:- запуск контейнера
Тесты и DockerУправление
Как было:- остановка демона
Тесты и DockerУправление
Как стало:- остановка контейнера
Тесты и DockerУправление
Как было:- изменение конфига
Тесты и DockerУправление
Как стало:- изменение конфига
Тесты и DockerОбщение
"listen": [ { "proto": "daemon-gpb", "address": "0.0.0.0:111" }, { "proto": "daemon-gpb/json", "address": "0.0.0.0:222" }, { "proto": "stats-gpb", "address": "0.0.0.0:333" },
{ "proto": "stats-gpb/json", "address": "0.0.0.0:444" },]
Тесты и DockerОбщение
Как было:"listen": [ { "proto": "daemon-gpb", "address": "0.0.0.0:0" }, { "proto": "daemon-gpb/json", "address": "0.0.0.0:0" }, { "proto": "stats-gpb", "address": "0.0.0.0:0" },
{ "proto": "stats-gpb/json", "address": "0.0.0.0:0" },]
Тесты и DockerОбщение
Старый вариант в новой обертке:- общий с хостом сетевой интерфейс (--net=host)
Тесты и DockerОбщение
Новый вариант:- прокидывать нужные порты при запуске (-p
host_port:cont_port)
Тесты и DockerОбщениеКак стало:"listen": [ { "proto": "daemon-gpb", "address": "0.0.0.0:111" }, { "proto": "daemon-gpb/json", "address": "0.0.0.0:222" }, { "proto": "stats-gpb", "address": "0.0.0.0:333" },
{ "proto": "stats-gpb/json", "address": "0.0.0.0:444" },]
Получение портов:$ docker port daemon_cont_name 111
Тесты и Docker
DaemonAPI DockerAPI
Плюсы: Минусы:
Общие впечатления
Плюсы:- унификация
Минусы:
Общие впечатления
Плюсы:- унификация- упрощение
Минусы:
Общие впечатления
Плюсы:- унификация- упрощение
Минусы:- рутовые права
Общие впечатления
Плюсы:- унификация- упрощение
Минусы:- рутовые права- копирование
файлов
Общие впечатления
Спасибо за внимание!
Доклад Антона Турецкого и Ильи Раудсеппа “Docker в Badoo”- http://urlid.ru/cgji
Статьи о процессе разработки в Badoo
- http://urlid.ru/cgjj- http://urlid.ru/cgjk- http://urlid.ru/cgjl
Конец
Спасибо за внимание
Наш habr-блог: http://habrahabr.ru/company/badoo/blog/