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

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

Transcript of Docker - счастье для хомячка или ника?

Page 1: Docker - счастье для хомячка или ника?

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

Page 2: Docker - счастье для хомячка или ника?

About me:

Ruslan Sharipov

Twitter: @sharipov_ruBlog: monkeypatch.ru

Page 3: Docker - счастье для хомячка или ника?

Результаты опроса

Page 4: Docker - счастье для хомячка или ника?

Что такое Docker?

Docker is an open platform for developers and sysadminsto build, ship, and run distributed applications

Page 5: Docker - счастье для хомячка или ника?

Какие проблемы решает?

На настройку окружения вручную каждый разуходит много времени

Спустя какое то время, сложно разобраться,в каком состоянии сервер/набор софта

Различия в dev-окружениях разработчиков и боевых серверах

Сервер - помойка, никто не знает, что будет если удалить пакет XXXXXX

Сложно накатывать обновления софта и security-фиксы

Мигрировать на другой хостинг/сервер - больВыкатывать релизы - страшноХочется Continuos Delivery

Page 6: Docker - счастье для хомячка или ника?

Какие проблемы решает?

Page 7: Docker - счастье для хомячка или ника?

Многие из этих проблем уже решены в известных системах управления конфигурациями (chef / puppet / ansible /salt)

так всё же зачем нам Docker?

Стоп!!!

Page 8: Docker - счастье для хомячка или ника?

Всё ещё остаётся проблема различия версий пакетов

Идея контейнеризации и изоляции

Выделение ресурсов

Docker advantages

Интеграция с CI

Page 9: Docker - счастье для хомячка или ника?

Основные принципы Docker

Контейнеризация

Page 10: Docker - счастье для хомячка или ника?
Page 11: Docker - счастье для хомячка или ника?

Пример контейнеров

rails:latest sidekiq:latest postgres:9.4 rethinkdb:latest redis:latest logstash:latest elasticsearch:latest

> docker ps

Page 12: Docker - счастье для хомячка или ника?

Linux Containers (LXC)

интерфейс, предоставляющий доступ к возможностям ядра Linux,

который позволяют запускать и управлятьконтейнерами

https://linuxcontainers.org/lxc/introduction/

Page 13: Docker - счастье для хомячка или ника?

Docker architecture

Page 14: Docker - счастье для хомячка или ника?

Docker против виртуальных машин: где профит, Карл?

Контейнеры запускаются в той же операционной системе,что и хост

AuFS в качестве файловой системы

Ресурсы между хостом и контейнером расшарены

Быстрый запуск (секунды против минут для полностью виртуализированной системы)

VM живёт вечно, контейнер - запускается и удаляется

Page 15: Docker - счастье для хомячка или ника?

Docker против виртуальных машин: где профит, Карл?

Page 16: Docker - счастье для хомячка или ника?

Docker против виртуальных машин: где профит, Карл?

Page 17: Docker - счастье для хомячка или ника?

Docker: быстрый стартдля новичков

$ docker images

Page 18: Docker - счастье для хомячка или ника?

Docker: быстрый стартдля новичков

Page 19: Docker - счастье для хомячка или ника?

Docker: быстрый стартдля новичков

$ docker pull redis:3.0.1

Page 20: Docker - счастье для хомячка или ника?

Docker: быстрый стартдля новичков

$ docker run -d --name redis redis:3.0.1

Page 21: Docker - счастье для хомячка или ника?

Docker: быстрый стартдля новичков

$ docker run -d --name redis redis:3.0.1 -p 6379:6379

Page 22: Docker - счастье для хомячка или ника?

Docker: быстрый стартдля новичков

$ docker run -d --name redis redis:3.0.1

Docker: быстрый стартдля новичков

Page 23: Docker - счастье для хомячка или ника?

Docker: простой, как git

$ docker pull$ docker push

Page 24: Docker - счастье для хомячка или ника?

Docker: простой, как git

Page 25: Docker - счастье для хомячка или ника?

Docker: простой, как git

Образы отнаследованы от родителя

Base Image - начальный образ

Для нового образа мы можем воспользоваться любой версией уже

существующего образа (image)

Коммиты создают новый образ

Page 26: Docker - счастье для хомячка или ника?

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"]

Page 27: Docker - счастье для хомячка или ника?

Docker: bad parts

docker != микросервисы

Page 28: Docker - счастье для хомячка или ника?

Docker: bad parts

в конце 2013 - в первой половине 2014 docker был ужасно нестабилен

Page 29: Docker - счастье для хомячка или ника?

Docker: bad parts

нет понимания и ответа на вопрос, а как правильно готовить?

Page 30: Docker - счастье для хомячка или ника?

Docker: bad parts

много маркетингового булшита вокруг

Page 31: Docker - счастье для хомячка или ника?

Docker: bad parts

не работает на Windows и OSX

Page 32: Docker - счастье для хомячка или ника?

OpenVPN Wordpress

Gitlab OwnCloud

ErrbitJenkins

Redmine Oracle XE FreeGeoIP

Perdocker code eval

Docker: полезные бонусы

DockerHub: масса полезных контейнеров на каждый день. Примеры:

Page 33: Docker - счастье для хомячка или ника?

Docker: полезные бонусы

Docker Compose (ранее - fig) - простой инструмент для запуска контейнеров из специального конфига

web: build: ./Dockerfile links: - db - redis ports: - "8000:8000" db: image: postgresredis: image: redis

$ docker-compose up

Page 34: Docker - счастье для хомячка или ника?

Docker: полезные бонусы

нет необходимости в Vagrant и виртуальных машинах (VirtualBox, Parallels)

$ docker-compose up

Docker Compose (ранее - fig) - простой инструмент для запуска контейнеров из специального конфига

Page 35: Docker - счастье для хомячка или ника?

Docker: полезные бонусы

нет необходимости в Vagrant и виртуальных машинах (VirtualBox, Parallels)

$ docker-compose up

Docker Compose (ранее - fig) - простой инструмент для запуска контейнеров из специального конфига

Page 36: Docker - счастье для хомячка или ника?

Docker: деплой

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

контейнеры надо перезапустить

Page 37: Docker - счастье для хомячка или ника?

Docker: деплой

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

контейнеры надо перезапустить

Для zero-downtime нужно немноготерпения: nginx + два хоста в upstreams

на новый и старый контейнер

Page 38: Docker - счастье для хомячка или ника?

Docker: деплой

upstream docker { server 127.0.0.1:8080; server 127.0.0.1:8080; }

server { listen 80; location / { proxy_pass http://docker; } }

Page 39: Docker - счастье для хомячка или ника?

Docker: деплой

Page 40: Docker - счастье для хомячка или ника?

Docker: деплой

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

Page 41: Docker - счастье для хомячка или ника?

Docker: деплой

CI, которые поддерживают Docker:

Jenkins (plugin)CircleCI Buildkite dron.io

shippable

…и многие другие

Page 42: Docker - счастье для хомячка или ника?

Docker: деплой

Сборка и хостинг образов в облаке:

quay.io

tutum.co dotcloud.com

stackdock.com

…и многие другие

Page 43: Docker - счастье для хомячка или ника?

Docker: деплой

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

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

Page 44: Docker - счастье для хомячка или ника?

Docker: деплой для гиков

Docker + CoreOS + Fleet

Page 45: Docker - счастье для хомячка или ника?

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

Docker: deployment для полугика, полухомячка

Page 46: Docker - счастье для хомячка или ника?

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

bundle exec centurion -e production -a deploy

Docker: deployment для полугика, полухомячка

Page 47: Docker - счастье для хомячка или ника?

Docker: deployment для хомячков

cloud66.com

* работает c DigitalOcean и AWS * метрики* бэкапы* нотификации* firewall* не нужно беспокоиться о heartbleed/shellshock/poodle * деплой с айфончика

Page 48: Docker - счастье для хомячка или ника?

Docker: deployment для хомячков

Page 49: Docker - счастье для хомячка или ника?

Docker: deployment

HN: How do you use Docker in production?

Page 50: Docker - счастье для хомячка или ника?

Docker: выводы

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

ни докер вам не нужны

Page 51: Docker - счастье для хомячка или ника?

Docker: выводы

Если у вас нет проблем с выкаткой в продакшн,

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

Page 52: Docker - счастье для хомячка или ника?

Docker: выводы

Если есть какая то боль, и автоматизации хочется, попробуйте Ansible

https://github.com/ansible/ansible

Page 53: Docker - счастье для хомячка или ника?

Docker: выводы

Если у вы расстроились в chef / puppet / ansible /salt, или хотите получить всю выгоду от абстракций болеевысокого уровня - контейнеров - пробуйте docker.

Page 54: Docker - счастье для хомячка или ника?

Docker: выводы

Docker может понравиться и хомячкам и гикам, есть множество инструментов и подходов вокруг

Page 55: Docker - счастье для хомячка или ника?

Docker: выводы

Docker сейчас - production ready

Page 56: Docker - счастье для хомячка или ника?

Docker: выводы

Вокруг Docker много денег и компаний: относитесь к маркетинговым заявлениям

с холодной головой

Page 57: Docker - счастье для хомячка или ника?

Docker: выводы

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

ни докер вам не нужны

Page 58: Docker - счастье для хомячка или ника?

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

Вопросы?