Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Использование Docker

Использование Docker

Александр Чистяков

В последнее время Docker привлек значительное внимание разработчиков и специалистов отделов эксплуатации, но опыт использования Docker в production есть не у всех. Александр расскажет о том, какие именно задачи решает Docker, и как использовать его в своей инфраструктуре. Поговорим также о том, как устроена экосистема Docker, и особо остановимся на некоторых ее частях, таких как Project Atomic от инженеров Red Hat и система окестрации Consul от Mitchell Hashimoto, автора Vagrant

Moscow Python Meetup

February 10, 2015
Tweet

More Decks by Moscow Python Meetup

Other Decks in Technology

Transcript

  1. Мы § Управляем инфраструктурами § Хотим управлять всеми инфраструктурами §

    Постоянно повышаем свою эффективность § Не боимся использовать новые средства и технологии, если это оправдано Использование Docker. 2015
  2. Краткий курс истории партии § VMWare — 1999 год §

    Xen — 2003 год § KVM — 2007 год § Linux-VServer — 2001 год § OpenVZ — 2005 год § LXC — 2008 год § Docker — 2013 год Использование Docker. 2015
  3. Docker — это гриб и радиоволна § Средство управления системой

    виртуализации § Средство создания образов виртуальных машин по декларативным описаниям § Средство публикации образов § Средство сокрытия абстракции сети Использование Docker. 2015
  4. Система виртуализации называется “cgroups” § Раньше Docker использовал LXC для

    управления cgroups § Теперь — собственное средство libcontainer § Может также использовать libvirt, LXC и systemd-nspawn Использование Docker. 2015
  5. Образы виртуальных машин § Описываются декларативно* через Dockerfile § Наследуются

    от единственного предка (множественное наследование невозможно) § Публикуются на https://hub.docker.com или в частные репозитории § Состоят из слоев Использование Docker. 2015
  6. Докеризация это не виртуализация! § В чем отличие классического OpenVZ-

    или LXC-контейнера от Docker-контейнера: § Классические контейнеры это виртуальные машины целиком § Они не иммутабельны § (Точнее, средства управления ими не поощряют пользователя создавать иммутабельные структуры) Использование Docker. 2015
  7. Как выглядит другой Dockerfile? § Хорошая практика — писать команды

    так, чтобы их было невозможно прочесть § Это минимизирует количество слоев Использование Docker. 2015
  8. Все варианты storage не без проблем § AUFS — число

    слоев, ошибка stale NFS lock § BTRFS — сложный уход за файловой системой, нестабильная работа § device-mapper — хранилище конечного размера Использование Docker. 2015
  9. Публикация образов § docker push gitinsky/mysql § https://hub.docker.com § Когда

    я последний раз смотрел, код репозитория Docker был написан на Python § Наверное, самое большое количество негативных отзывов в интернете о Docker связано со скоростью и стабильностью работы репозитория § Поэтому мы его не используем в продакшн Использование Docker. 2015
  10. Мы не используем репозиторий § А что вместо? § Сначала

    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
  11. Как это выглядит в конце? § Мы начали с использования

    baseimage от Phusion § И мигрируем в сторону подхода «один контейнер — одно приложение» Использование Docker. 2015
  12. Где хранить состояние? § Во внешней по отношению к Docker

    storage локации § Каталог монтируется внутрь контейнера через bind mount § Как докеризовать приложение? Поселить его в контейнер и вынести все его состояние на внешний том § https://flocker.io - volume manager для Docker на базе ZoL Использование Docker. 2015
  13. Как контейнеры связаны друг с другом? § Сеть полностью абстрагирована

    — я даже не знаю, какие у контейнеров IP-адреса § Опция --link § Порядок запуска контейнеров становится важен! Использование Docker. 2015
  14. Задача оркестрации § Контейнеры должны распределяться по хостам внешними механизмами

    и обеспечиваться ресурсами § Consul — service discovery tool § Key-value storage § DNS § Написан на Go § Регистрирует сервисы и позволяет их находить Использование Docker. 2015
  15. Project Atomic § Я использую продукты Red Hat c 1997-го

    года § Эти ребята умеют делать бизнес § Project Atomiс это: § rpm-ostree (атомарные апгрейды системы) § Docker § Kubernetes — orchestration tool от Google § Cockpit (панель управления на C и Python, не работает*) Использование Docker. 2015
  16. Выводы § Будущее уже наступило § На этот корабль еще

    можно успеть! § Мы используем Docker § И будем продолжать это делать § Чего и вам желаем Использование Docker. 2015
  17. С вами был Александр Чистяков, главный инженер Git in Sky

    [email protected] http://gitinsky.com http://meetup.com/DevOps-40 Пожалуйста, ваши вопросы. Спасибо за внимание!