View
1.000
Download
4
Category
Tags:
Preview:
Citation preview
Использование Docker
На работе и дома
Александр Чистяков, главный инженер Git in Sky,
2015
Мы
§ Управляем инфраструктурами§ Хотим управлять всеми инфраструктурами§ Постоянно повышаем свою эффективность§ Не боимся использовать новые средства
и технологии, если это оправдано
Использование Docker. 2015
Вы
§ Немного пишете на Python?
Использование Docker. 2015
Краткий курс истории партии
§ VMWare — 1999 год§ Xen — 2003 год§ KVM — 2007 год§ Linux-VServer — 2001 год§ OpenVZ — 2005 год§ LXC — 2008 год§ Docker — 2013 год
Использование Docker. 2015
Docker — это гриб и радиоволна
§ Средство управления системой виртуализации§ Средство создания образов виртуальных
машин по декларативным описаниям§ Средство публикации образов§ Средство сокрытия абстракции сети
Использование Docker. 2015
Система виртуализации называется “cgroups”
§ Раньше Docker использовал LXC для управления
cgroups§ Теперь — собственное средство libcontainer§ Может также использовать libvirt, LXC и
systemd-nspawn
Использование Docker. 2015
Образы виртуальных машин
§ Описываются декларативно* через Dockerfile§ Наследуются от единственного предка
(множественное наследование невозможно)§ Публикуются на https://hub.docker.com или в частные
репозитории§ Состоят из слоев
Использование Docker. 2015
Докеризация это не виртуализация!
§ В чем отличие классического OpenVZ- или LXC-контейнера от Docker-контейнера:
§ Классические контейнеры это виртуальные машины целиком§ Они не иммутабельны§ (Точнее, средства управления ими не
поощряют пользователя создавать
иммутабельные структуры)
Использование Docker. 2015
Как выглядит список образов?
Использование Docker. 2015
Как выглядит Dockerfile?
Использование Docker. 2015
Как выглядит другой Dockerfile?
§ Хорошая практика — писать команды так, чтобы их было невозможно прочесть
§ Это минимизирует количество слоев
Использование Docker. 2015
Все варианты storage не без проблем
§ AUFS — число слоев, ошибка stale NFS lock§ BTRFS — сложный уход за файловой системой, нестабильная
работа§ device-mapper — хранилище конечного размера
Использование Docker. 2015
device-mapper
Использование Docker. 2015
AUFS
Использование Docker. 2015
§ Кстати, в Ubuntu Docker версии 1.0.1, а в CentOS — 1.3.2§
Публикация образов
§ docker push gitinsky/mysql§ https://hub.docker.com§ Когда я последний раз смотрел, код репозитория Docker был
написан на Python§ Наверное, самое большое количество негативных отзывов в
интернете о Docker связано со скоростью и стабильностью работы репозитория
§ Поэтому мы его не используем в продакшн
Использование Docker. 2015
Мы не используем репозиторий
§ А что вместо?§ Сначала 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
Как это выглядит в конце?
§ Мы начали с использования baseimage от Phusion§ И мигрируем в сторону подхода «один контейнер — одно
приложение»
Использование Docker. 2015
Где хранить состояние?
§ Во внешней по отношению к Docker storage локации§ Каталог монтируется внутрь контейнера через bind mount§ Как докеризовать приложение? Поселить его в контейнер и
вынести все его состояние на внешний том§ https://flocker.io - volume manager для Docker на базе ZoL
Использование Docker. 2015
Как контейнеры связаны друг с другом?
§ Сеть полностью абстрагирована — я даже не знаю, какие у контейнеров IP-адреса
§ Опция --link§ Порядок запуска контейнеров становится важен!
Использование Docker. 2015
Задача оркестрации
§ Контейнеры должны распределяться по хостам внешними механизмами и обеспечиваться ресурсами
§ Consul — service discovery tool§ Key-value storage§ DNS§ Написан на Go§ Регистрирует сервисы и позволяет их находить
Использование Docker. 2015
Project Atomic
§ Я использую продукты Red Hat c 1997-го года§ Эти ребята умеют делать бизнес§ Project Atomiс это:§ rpm-ostree (атомарные апгрейды системы)§ Docker§ Kubernetes — orchestration tool от Google§ Cockpit (панель управления на C и Python, не работает*)
Использование Docker. 2015
Выводы
§ Будущее уже наступило§ На этот корабль еще можно успеть!§ Мы используем Docker§ И будем продолжать это делать§ Чего и вам желаем
Использование Docker. 2015
С вами был Александр Чистяков,главный инженер Git in Sky
alex@gitinsky.comhttp://gitinsky.com
http://meetup.com/DevOps-40
Пожалуйста, ваши вопросы.
Спасибо за внимание!
Recommended