Docker - счастье для хомячка или ника?
-
Upload
ruslan-sharipov -
Category
Software
-
view
82 -
download
1
Transcript of Docker - счастье для хомячка или ника?
Docker: счастье для хомячка или гика?
Результаты опроса
Что такое Docker?
Docker is an open platform for developers and sysadminsto build, ship, and run distributed applications
Какие проблемы решает?
На настройку окружения вручную каждый разуходит много времени
Спустя какое то время, сложно разобраться,в каком состоянии сервер/набор софта
Различия в dev-окружениях разработчиков и боевых серверах
Сервер - помойка, никто не знает, что будет если удалить пакет XXXXXX
Сложно накатывать обновления софта и security-фиксы
Мигрировать на другой хостинг/сервер - больВыкатывать релизы - страшноХочется Continuos Delivery
Какие проблемы решает?
Многие из этих проблем уже решены в известных системах управления конфигурациями (chef / puppet / ansible /salt)
так всё же зачем нам Docker?
Стоп!!!
Всё ещё остаётся проблема различия версий пакетов
Идея контейнеризации и изоляции
Выделение ресурсов
Docker advantages
Интеграция с CI
Основные принципы Docker
Контейнеризация
Пример контейнеров
rails:latest sidekiq:latest postgres:9.4 rethinkdb:latest redis:latest logstash:latest elasticsearch:latest
> docker ps
Linux Containers (LXC)
интерфейс, предоставляющий доступ к возможностям ядра Linux,
который позволяют запускать и управлятьконтейнерами
https://linuxcontainers.org/lxc/introduction/
Docker architecture
Docker против виртуальных машин: где профит, Карл?
Контейнеры запускаются в той же операционной системе,что и хост
AuFS в качестве файловой системы
Ресурсы между хостом и контейнером расшарены
Быстрый запуск (секунды против минут для полностью виртуализированной системы)
VM живёт вечно, контейнер - запускается и удаляется
Docker против виртуальных машин: где профит, Карл?
Docker против виртуальных машин: где профит, Карл?
Docker: быстрый стартдля новичков
$ docker images
Docker: быстрый стартдля новичков
Docker: быстрый стартдля новичков
$ docker pull redis:3.0.1
Docker: быстрый стартдля новичков
$ docker run -d --name redis redis:3.0.1
Docker: быстрый стартдля новичков
$ docker run -d --name redis redis:3.0.1 -p 6379:6379
Docker: быстрый стартдля новичков
$ docker run -d --name redis redis:3.0.1
Docker: быстрый стартдля новичков
Docker: простой, как git
$ docker pull$ docker push
Docker: простой, как git
Docker: простой, как git
Образы отнаследованы от родителя
Base Image - начальный образ
Для нового образа мы можем воспользоваться любой версией уже
существующего образа (image)
Коммиты создают новый образ
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"]
Docker: bad parts
docker != микросервисы
Docker: bad parts
в конце 2013 - в первой половине 2014 docker был ужасно нестабилен
Docker: bad parts
нет понимания и ответа на вопрос, а как правильно готовить?
Docker: bad parts
много маркетингового булшита вокруг
Docker: bad parts
не работает на Windows и OSX
OpenVPN Wordpress
Gitlab OwnCloud
ErrbitJenkins
Redmine Oracle XE FreeGeoIP
Perdocker code eval
Docker: полезные бонусы
DockerHub: масса полезных контейнеров на каждый день. Примеры:
Docker: полезные бонусы
Docker Compose (ранее - fig) - простой инструмент для запуска контейнеров из специального конфига
web: build: ./Dockerfile links: - db - redis ports: - "8000:8000" db: image: postgresredis: image: redis
$ docker-compose up
Docker: полезные бонусы
нет необходимости в Vagrant и виртуальных машинах (VirtualBox, Parallels)
$ docker-compose up
Docker Compose (ранее - fig) - простой инструмент для запуска контейнеров из специального конфига
Docker: полезные бонусы
нет необходимости в Vagrant и виртуальных машинах (VirtualBox, Parallels)
$ docker-compose up
Docker Compose (ранее - fig) - простой инструмент для запуска контейнеров из специального конфига
Docker: деплой
Docker Compose хорош для того, чтобы контейнеры запускать, но не очень крут тогда, когда
контейнеры надо перезапустить
Docker: деплой
Docker Compose хорош для того, чтобы контейнеры запускать, но не очень крут тогда, когда
контейнеры надо перезапустить
Для zero-downtime нужно немноготерпения: nginx + два хоста в upstreams
на новый и старый контейнер
Docker: деплой
upstream docker { server 127.0.0.1:8080; server 127.0.0.1:8080; }
server { listen 80; location / { proxy_pass http://docker; } }
Docker: деплой
Docker: деплой
Проблемы со сборкой в облаке:* лежит хостинг образов - не можем деплоить * бесплатные тарифные планы ущербны* сложно спрогнозировать скорость сборки
Docker: деплой
CI, которые поддерживают Docker:
Jenkins (plugin)CircleCI Buildkite dron.io
shippable
…и многие другие
Docker: деплой
Сборка и хостинг образов в облаке:
quay.io
tutum.co dotcloud.com
stackdock.com
…и многие другие
Docker: деплой
Благодаря Docker, Continous Integration сервера способны:
* запускать 1:1 актуальное окружение * собирать одновременно много сборок * обеспечивать изоляцию между процессами сборки* запускать тесты в параллель
Docker: деплой для гиков
Docker + CoreOS + Fleet
Centurion от New Relic: этакая “capistrano” для docker контейнеров
Docker: deployment для полугика, полухомячка
Centurion от New Relic: этакая “capistrano” для docker контейнеров
bundle exec centurion -e production -a deploy
Docker: deployment для полугика, полухомячка
Docker: deployment для хомячков
cloud66.com
* работает c DigitalOcean и AWS * метрики* бэкапы* нотификации* firewall* не нужно беспокоиться о heartbleed/shellshock/poodle * деплой с айфончика
Docker: deployment для хомячков
Docker: выводы
Если у вас нет проблем с dependecy hell и запуском окружения, то ни системы управления конфигурациями,
ни докер вам не нужны
Docker: выводы
Если у вас нет проблем с выкаткой в продакшн,
то ни системы управления конфигурациями, ни докер вам не нужны
Docker: выводы
Если есть какая то боль, и автоматизации хочется, попробуйте Ansible
https://github.com/ansible/ansible
Docker: выводы
Если у вы расстроились в chef / puppet / ansible /salt, или хотите получить всю выгоду от абстракций болеевысокого уровня - контейнеров - пробуйте docker.
Docker: выводы
Docker может понравиться и хомячкам и гикам, есть множество инструментов и подходов вокруг
Docker: выводы
Docker сейчас - production ready
Docker: выводы
Вокруг Docker много денег и компаний: относитесь к маркетинговым заявлениям
с холодной головой
Docker: выводы
Если у вас нет проблем с dependecy hell и запуском окружения, то ни системы управления конфигурациями,
ни докер вам не нужны
Спасибо за внимание!
Вопросы?