2. Мы
§ Управляем инфраструктурами
§ Хотим управлять всеми инфраструктурами
§ Постоянно повышаем свою эффективность
§ Не боимся использовать новые средства
и технологии, если это оправдано
Использование Docker. 2015
4. Краткий курс истории партии
§ VMWare — 1999 год
§ Xen — 2003 год
§ KVM — 2007 год
§ Linux-VServer — 2001 год
§ OpenVZ — 2005 год
§ LXC — 2008 год
§ Docker — 2013 год
Использование Docker. 2015
5. Docker — это гриб и радиоволна
§ Средство управления системой виртуализации
§ Средство создания образов виртуальных
машин по декларативным описаниям
§ Средство публикации образов
§ Средство сокрытия абстракции сети
Использование Docker. 2015
6. Система виртуализации называется “cgroups”
§ Раньше Docker использовал LXC для управления
cgroups
§ Теперь — собственное средство libcontainer
§ Может также использовать libvirt, LXC и
systemd-nspawn
Использование Docker. 2015
7. Образы виртуальных машин
§ Описываются декларативно* через Dockerfile
§ Наследуются от единственного предка
(множественное наследование невозможно)
§ Публикуются на https://hub.docker.com или в частные
репозитории
§ Состоят из слоев
Использование Docker. 2015
8. Докеризация это не виртуализация!
§ В чем отличие классического OpenVZ- или LXC-контейнера от
Docker-контейнера:
§ Классические контейнеры это виртуальные машины целиком
§ Они не иммутабельны
§ (Точнее, средства управления ими не
поощряют пользователя создавать
иммутабельные структуры)
Использование Docker. 2015
11. Как выглядит другой Dockerfile?
§ Хорошая практика — писать команды так, чтобы их было
невозможно прочесть
§ Это минимизирует количество слоев
Использование Docker. 2015
12. Все варианты storage не без проблем
§ AUFS — число слоев, ошибка stale NFS lock
§ BTRFS — сложный уход за файловой системой, нестабильная
работа
§ device-mapper — хранилище конечного размера
Использование Docker. 2015
15. Публикация образов
§ docker push gitinsky/mysql
§ https://hub.docker.com
§ Когда я последний раз смотрел, код репозитория Docker был
написан на Python
§ Наверное, самое большое количество негативных отзывов в
интернете о Docker связано со скоростью и стабильностью
работы репозитория
§ Поэтому мы его не используем в продакшн
Использование Docker. 2015
16. Мы не используем репозиторий
§ А что вместо?
§ Сначала Ansible настраивает параметры хост-машины,
устанавливает Docker и собирает images
§ Примеры Ansible roles для этого:
§ https://github.com/gitinsky/ansible-role-nginx-proxy-dockerized
§ https://github.com/gitinsky/ansible-role-mysql-dockerized
§ Потом Ansible запускает контейнеры, если они не запущены
Использование Docker. 2015
17. Как это выглядит в конце?
§ Мы начали с использования baseimage от Phusion
§ И мигрируем в сторону подхода «один контейнер — одно
приложение»
Использование Docker. 2015
18. Где хранить состояние?
§ Во внешней по отношению к Docker storage локации
§ Каталог монтируется внутрь контейнера через bind mount
§ Как докеризовать приложение? Поселить его в контейнер и
вынести все его состояние на внешний том
§ https://flocker.io - volume manager для Docker на базе ZoL
Использование Docker. 2015
19. Как контейнеры связаны друг с другом?
§ Сеть полностью абстрагирована — я даже не знаю, какие у
контейнеров IP-адреса
§ Опция --link
§ Порядок запуска контейнеров становится важен!
Использование Docker. 2015
20. Задача оркестрации
§ Контейнеры должны распределяться по хостам внешними
механизмами и обеспечиваться ресурсами
§ Consul — service discovery tool
§ Key-value storage
§ DNS
§ Написан на Go
§ Регистрирует сервисы и позволяет их находить
Использование Docker. 2015
21. Project Atomic
§ Я использую продукты Red Hat c 1997-го года
§ Эти ребята умеют делать бизнес
§ Project Atomiс это:
§ rpm-ostree (атомарные апгрейды системы)
§ Docker
§ Kubernetes — orchestration tool от Google
§ Cockpit (панель управления на C и Python, не работает*)
Использование Docker. 2015
22. Выводы
§ Будущее уже наступило
§ На этот корабль еще можно успеть!
§ Мы используем Docker
§ И будем продолжать это делать
§ Чего и вам желаем
Использование Docker. 2015
23. С вами был Александр Чистяков,
главный инженер Git in Sky
alex@gitinsky.com
http://gitinsky.com
http://meetup.com/DevOps-40
Пожалуйста, ваши вопросы.
Спасибо за внимание!