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

Avatar for Moscow Python Meetup

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 Пожалуйста, ваши вопросы. Спасибо за внимание!