My talk on Docker from Moscow Django Meetup #25

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

Пожалуйста, ваши вопросы.

Спасибо за внимание!