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

Post on 14-Aug-2015

82 Views

Category:

Software

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

About me:

Ruslan Sharipov

Twitter: @sharipov_ruBlog: monkeypatch.ru

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

Что такое 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: deployment

HN: How do you use Docker in production?

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 и запуском окружения, то ни системы управления конфигурациями,

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

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

Вопросы?

top related