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

Docker: счастье для хомячка или гика?

Docker: счастье для хомячка или гика?

Sharipov Ruslan

May 16, 2015
Tweet

More Decks by Sharipov Ruslan

Other Decks in Programming

Transcript

  1. Что такое Docker? Docker is an open platform for developers

    and sysadmins to build, ship, and run distributed applications
  2. Какие проблемы решает? На настройку окружения вручную каждый раз
 уходит

    много времени Спустя какое то время, сложно разобраться,
 в каком состоянии сервер/набор софта Различия в dev-окружениях разработчиков 
 и боевых серверах Сервер - помойка, никто не знает, что будет
 если удалить пакет XXXXXX Сложно накатывать обновления софта и 
 security-фиксы Мигрировать на другой хостинг/сервер - боль Выкатывать релизы - страшно Хочется Continuos Delivery
  3. Многие из этих проблем уже решены в известных системах управления

    конфигурациями (chef / puppet / ansible /salt) так всё же зачем 
 нам Docker? Стоп!!!
  4. Всё ещё остаётся проблема различия версий пакетов Идея контейнеризации и

    изоляции Выделение ресурсов Docker advantages Интеграция с CI
  5. Linux Containers (LXC) интерфейс, предоставляющий доступ 
 к возможностям ядра

    Linux, 
 который позволяют запускать и управлять
 контейнерами https://linuxcontainers.org/lxc/introduction/
  6. Docker против виртуальных машин: где профит, Карл? Контейнеры запускаются в

    той же операционной системе,
 что и хост AuFS в качестве файловой системы Ресурсы между хостом и контейнером расшарены Быстрый запуск (секунды против минут для полностью виртуализированной системы) VM живёт вечно, контейнер - запускается и удаляется
  7. Docker: быстрый старт
 для новичков $ docker run -d --name

    redis redis:3.0.1 Docker: быстрый старт
 для новичков
  8. Docker: простой, как git Образы отнаследованы от родителя Base Image

    - начальный образ Для нового образа мы можем воспользоваться любой версией уже существующего образа (image) Коммиты создают новый образ
  9. Dockerfile FROM ubuntu:trusty ENV DEBIAN_FRONTEND noninteractive RUN apt-get update -qq

    && apt-get install -y mysql-server-5.5 ADD my.cnf /etc/mysql/conf.d/my.cnf RUN chmod 664 /etc/mysql/conf.d/my.cnf ADD run /usr/local/bin/run RUN chmod +x /usr/local/bin/run VOLUME ["/var/lib/mysql"] EXPOSE 3306 CMD ["/usr/local/bin/run"]
  10. Docker: bad parts в конце 2013 - в первой половине

    2014 
 docker был ужасно нестабилен
  11. OpenVPN Wordpress Gitlab OwnCloud Errbit
 Jenkins Redmine Oracle XE FreeGeoIP


    Perdocker code eval Docker: полезные бонусы DockerHub: масса полезных контейнеров на каждый день. Примеры:
  12. Docker: полезные бонусы Docker Compose (ранее - fig) - простой

    инструмент для запуска контейнеров из специального конфига web: build: ./Dockerfile links: - db
 - redis ports: - "8000:8000" db: image: postgres
 redis:
 image: redis $ docker-compose up
  13. Docker: полезные бонусы нет необходимости в Vagrant и виртуальных машинах

    (VirtualBox, Parallels) $ docker-compose up Docker Compose (ранее - fig) - простой инструмент для запуска контейнеров из специального конфига
  14. Docker: полезные бонусы нет необходимости в Vagrant и виртуальных машинах

    (VirtualBox, Parallels) $ docker-compose up Docker Compose (ранее - fig) - простой инструмент для запуска контейнеров из специального конфига
  15. Docker: деплой Docker Compose хорош для того, чтобы контейнеры 


    запускать, но не очень крут тогда, когда
 контейнеры надо перезапустить
  16. Docker: деплой Docker Compose хорош для того, чтобы контейнеры 


    запускать, но не очень крут тогда, когда
 контейнеры надо перезапустить Для zero-downtime нужно немного
 терпения: nginx + два хоста в upstreams
 на новый и старый контейнер
  17. Docker: деплой upstream docker { server 127.0.0.1:8080;
 server 127.0.0.1:8080;
 }


    server {
 listen 80;
 location / {
 proxy_pass http://docker;
 }
 }
  18. Docker: деплой Проблемы со сборкой в облаке:
 
 * лежит

    хостинг образов - не можем деплоить
 * бесплатные тарифные планы ущербны
 * сложно спрогнозировать скорость сборки
 

  19. Docker: деплой CI, которые поддерживают Docker:
 
 Jenkins (plugin)
 CircleCI


    Buildkite
 dron.io
 shippable
 
 …и многие другие
 

  20. Docker: деплой 
 Сборка и хостинг образов в облаке:
 


    quay.io
 tutum.co
 dotcloud.com
 stackdock.com
 
 …и многие другие
 

  21. Docker: деплой Благодаря Docker, Continous Integration 
 сервера способны: *

    запускать 1:1 актуальное окружение
 * собирать одновременно много сборок
 * обеспечивать изоляцию между процессами сборки
 * запускать тесты в параллель
 
 

  22. Centurion от New Relic: этакая “capistrano” 
 для docker контейнеров

    Docker: deployment для полугика, полухомячка
  23. Centurion от New Relic: этакая “capistrano” 
 для docker контейнеров

    bundle exec centurion -e production -a deploy Docker: deployment для полугика, полухомячка
  24. Docker: deployment для хомячков cloud66.com * работает c DigitalOcean и

    AWS
 * метрики
 * бэкапы
 * нотификации
 * firewall
 * не нужно беспокоиться о 
 heartbleed/shellshock/poodle
 * деплой с айфончика
  25. Docker: выводы Если у вас нет проблем с dependecy hell

    и запуском 
 окружения, то ни системы управления конфигурациями,
 ни докер вам не нужны
  26. Docker: выводы Если у вас нет проблем с выкаткой
 в

    продакшн, 
 то ни системы управления конфигурациями,
 ни докер вам не нужны
  27. Docker: выводы Если у вы расстроились в chef / puppet

    / ansible /salt,
 или хотите получить всю выгоду от абстракций более
 высокого уровня - контейнеров - пробуйте docker.
  28. Docker: выводы Docker может понравиться и хомячкам и гикам,
 есть

    множество инструментов и подходов вокруг
  29. Docker: выводы Вокруг Docker много денег и компаний: 
 относитесь

    к маркетинговым заявлениям
 с холодной головой
  30. Docker: выводы Если у вас нет проблем с dependecy hell

    и запуском 
 окружения, то ни системы управления конфигурациями,
 ни докер вам не нужны