Что такое Docker? Это Docker!
Александр Чистяков, главный инженер Git in Sky
20.06.2015
Юкон, Саратов
Давайте познакомимся
●
Меня зовут Саша
●
Я работаю в компании Git in Sky
●
Мы делаем прекрасное понятным
Что же такое Docker?
●
Во-первых, Docker это прекрасно!
●
Docker это:
●
Сервис
●
Утилита на Go
●
Средство виртуализации (?)
●
Компания с клевым логотипом
●
Что-то еще?
Контейнеризация это...
●
...новая виртуализация
●
Свежачок!
●
FreeBSD jail – since 2000
●
Virtuozzo – since 2000
●
Linux VServer – since 2001
●
OpenVZ – since 2005
●
Одна из черепашек лжет
Процесс работы с Docker
●
Написание Dockerfile
●
Сборка образа: docker build
●
Публикация образа в registry: docker push
●
Получение образа из registry: docker pull
●
Запуск контейнера: docker run
Как запустить сборку образа?
●
docker build -t gitinsky/hbase-master:0.1.1 --rm
/root/hbase-master-dockerized
●
В каталоге /root/hbase-master-dockerized находится Dockerfile
●
Который представляет собой “декларативное” описание того,
что надо сделать
●
Как водится, Dockerfile представляет собой программу на
кастомном DSL
Как выглядит Dockerfile?
●
Наследование от двух базовых образов (к счастью) невозможно!
Что такое registry?
●
SaaS: https://hub.docker.com
●
Есть Open Source standalone версия
●
Написана на Python
●
Переписана на Go
●
Версия на Python работает плохо
●
Версия на Go не работает вообще
Как устроен образ?
●
Чтобы распространение образов происходило
быстрее, они создаются послойно
●
Слои имеют уникальный хэш и кэшируются
●
Слой – это просто снэпшот файловой системы
●
В registry публикуются только те слои, которых
там еще нет, обратное тоже верно
●
Все это работает достаточно печально
Как, все же, устроен образ?
●
Варианты систем хранения для Docker:
●
AUFS (принято в Ubuntu)
●
Device mapper (принято в RH)
●
BTRFS (принято в Badoo)
●
ZFS (наверное, принято в Joyent)
Как запускать контейнер?
●
Варианты систем хранения для Docker:
●
AUFS (принято в Ubuntu)
●
Device mapper (принято в RH)
●
BTRFS (принято в Badoo)
●
ZFS (наверное, принято в Joyent)
docker images
●
Написание Dockerfile
●
Сборка образа:
●
Публикация образа в registry:
●
Получение образа из registry:
●
Запуск контейнера:
docker ps
●
Сборка образа:
●
Публикация образа в registry:
●
Получение образа из registry:
●
Запуск контейнера:
Зачем ты это сделала?
●
http://martinfowler.com/bliki/ImmutableServer.html
●
One world, one nation, one image
●
Все было придумано до нас – Badoo
выпускает обновления в виде .iso-образов
●
Docker просто стандартизировал этот
подход
«Толстые» и «тонкие»
●
Парни в свитерах дают сдачи:
●
https://phusion.github.io/baseimage-docker/
●
Внутри – cron, кошерный init, rsyslog и SSH-
сервер
●
Новый подход – один контейнер для одного
процесса
●
Сервисные задачи – в отдельных контейнерах
Как хранить состояние
●
В доклад врывается Капитан Очевидность
●
На всякий случай Капитан повторяет:
ТОЛЬКО ИЗВНЕ!
●
Как лучше всего начать хранить состояние
извне?
●
Запретить писать на FS контейнера!
●
Опция запуска --read-only
Docker и сеть
●
Штатно – проброс портов
●
Варианты ключа --net: bridge, none,
container:<name|id>, host
●
Docker пытается сам следить за пробросом
портов, но, если на хосте есть другой
конфигуратор фаервола, то дело плохо
Для тех, кому мало
●
OpenVSwitch:
●
gre
●
vxlan
●
Работает хорошо
●
Flannel:
●
По слухам, конфигуратор vxlan
Оркестрация
●
Orchestration describes the automated
arrangement, coordination, and management of
complex computer systems, middleware, and
services.
●
Не беспокойтесь, я тоже не понимаю смысл
вышенаписанного
Что же это такое?
●
Обеспечение service discovery
●
Планирование ресурсов
●
Слежение за всем этим зоопарком
●
docker link (и fig над ним)
●
Consul
●
Kubernetes, Mesos
●
Старый добрый Ansible
Docker и безопасность
●
Не нужно запускать ваши процессы в
контейнере от root
●
Не нужно использовать чужие образы без ревью
●
Нужно читать и понимать Dockerfiles
Docker и enterprise
●
Было в первом докладе
●
И в предыдущем тоже
Docker и Windows
●
Я не знаю, что такое Windows, извините :(
●
Но компания Docker делает версию своего
продукта и под Windows тоже
●
Правда, нам она ни к чему
Экосистема Docker
●
Каждый месяц появляются какие-нибудь новые
названия
●
Их очень много, я ожидаю, что некоторые умрут
●
Flocker, Citadel, Mesos, Kubernetes, Docker
Swarm, CoreOS, RancherOS, Project Atomic, ...
Список исп. литературы
●
Paul Graham “Beating the averages”
●
Этот слайд должен был называться “выводы”, но
выводов не будет
●
Просто лучше не используйте Docker, нам не
нужны конкуренты :)
Спасибо за внимание!
●
Пожалуйста, ваши вопросы?
●
С вами был
●
Александр Чистяков, главный инженер, Git in
Sky
●
http://gitinsky.com
●
alex@gitinsky.com
●
http://meetup.com/Docker-SPb

My talk on Docker, Youcon 2015

  • 1.
    Что такое Docker?Это Docker! Александр Чистяков, главный инженер Git in Sky 20.06.2015 Юкон, Саратов
  • 2.
    Давайте познакомимся ● Меня зовутСаша ● Я работаю в компании Git in Sky ● Мы делаем прекрасное понятным
  • 3.
    Что же такоеDocker? ● Во-первых, Docker это прекрасно! ● Docker это: ● Сервис ● Утилита на Go ● Средство виртуализации (?) ● Компания с клевым логотипом ● Что-то еще?
  • 4.
    Контейнеризация это... ● ...новая виртуализация ● Свежачок! ● FreeBSDjail – since 2000 ● Virtuozzo – since 2000 ● Linux VServer – since 2001 ● OpenVZ – since 2005 ● Одна из черепашек лжет
  • 5.
    Процесс работы сDocker ● Написание Dockerfile ● Сборка образа: docker build ● Публикация образа в registry: docker push ● Получение образа из registry: docker pull ● Запуск контейнера: docker run
  • 6.
    Как запустить сборкуобраза? ● docker build -t gitinsky/hbase-master:0.1.1 --rm /root/hbase-master-dockerized ● В каталоге /root/hbase-master-dockerized находится Dockerfile ● Который представляет собой “декларативное” описание того, что надо сделать ● Как водится, Dockerfile представляет собой программу на кастомном DSL
  • 7.
    Как выглядит Dockerfile? ● Наследованиеот двух базовых образов (к счастью) невозможно!
  • 8.
    Что такое registry? ● SaaS:https://hub.docker.com ● Есть Open Source standalone версия ● Написана на Python ● Переписана на Go ● Версия на Python работает плохо ● Версия на Go не работает вообще
  • 9.
    Как устроен образ? ● Чтобыраспространение образов происходило быстрее, они создаются послойно ● Слои имеют уникальный хэш и кэшируются ● Слой – это просто снэпшот файловой системы ● В registry публикуются только те слои, которых там еще нет, обратное тоже верно ● Все это работает достаточно печально
  • 10.
    Как, все же,устроен образ? ● Варианты систем хранения для Docker: ● AUFS (принято в Ubuntu) ● Device mapper (принято в RH) ● BTRFS (принято в Badoo) ● ZFS (наверное, принято в Joyent)
  • 11.
    Как запускать контейнер? ● Вариантысистем хранения для Docker: ● AUFS (принято в Ubuntu) ● Device mapper (принято в RH) ● BTRFS (принято в Badoo) ● ZFS (наверное, принято в Joyent)
  • 12.
    docker images ● Написание Dockerfile ● Сборкаобраза: ● Публикация образа в registry: ● Получение образа из registry: ● Запуск контейнера:
  • 13.
    docker ps ● Сборка образа: ● Публикацияобраза в registry: ● Получение образа из registry: ● Запуск контейнера:
  • 14.
    Зачем ты этосделала? ● http://martinfowler.com/bliki/ImmutableServer.html ● One world, one nation, one image ● Все было придумано до нас – Badoo выпускает обновления в виде .iso-образов ● Docker просто стандартизировал этот подход
  • 15.
    «Толстые» и «тонкие» ● Парнив свитерах дают сдачи: ● https://phusion.github.io/baseimage-docker/ ● Внутри – cron, кошерный init, rsyslog и SSH- сервер ● Новый подход – один контейнер для одного процесса ● Сервисные задачи – в отдельных контейнерах
  • 16.
    Как хранить состояние ● Вдоклад врывается Капитан Очевидность ● На всякий случай Капитан повторяет: ТОЛЬКО ИЗВНЕ! ● Как лучше всего начать хранить состояние извне? ● Запретить писать на FS контейнера! ● Опция запуска --read-only
  • 17.
    Docker и сеть ● Штатно– проброс портов ● Варианты ключа --net: bridge, none, container:<name|id>, host ● Docker пытается сам следить за пробросом портов, но, если на хосте есть другой конфигуратор фаервола, то дело плохо
  • 18.
    Для тех, комумало ● OpenVSwitch: ● gre ● vxlan ● Работает хорошо ● Flannel: ● По слухам, конфигуратор vxlan
  • 19.
    Оркестрация ● Orchestration describes theautomated arrangement, coordination, and management of complex computer systems, middleware, and services. ● Не беспокойтесь, я тоже не понимаю смысл вышенаписанного
  • 20.
    Что же этотакое? ● Обеспечение service discovery ● Планирование ресурсов ● Слежение за всем этим зоопарком ● docker link (и fig над ним) ● Consul ● Kubernetes, Mesos ● Старый добрый Ansible
  • 21.
    Docker и безопасность ● Ненужно запускать ваши процессы в контейнере от root ● Не нужно использовать чужие образы без ревью ● Нужно читать и понимать Dockerfiles
  • 22.
    Docker и enterprise ● Былов первом докладе ● И в предыдущем тоже
  • 23.
    Docker и Windows ● Яне знаю, что такое Windows, извините :( ● Но компания Docker делает версию своего продукта и под Windows тоже ● Правда, нам она ни к чему
  • 24.
    Экосистема Docker ● Каждый месяцпоявляются какие-нибудь новые названия ● Их очень много, я ожидаю, что некоторые умрут ● Flocker, Citadel, Mesos, Kubernetes, Docker Swarm, CoreOS, RancherOS, Project Atomic, ...
  • 25.
    Список исп. литературы ● PaulGraham “Beating the averages” ● Этот слайд должен был называться “выводы”, но выводов не будет ● Просто лучше не используйте Docker, нам не нужны конкуренты :)
  • 26.
    Спасибо за внимание! ● Пожалуйста,ваши вопросы? ● С вами был ● Александр Чистяков, главный инженер, Git in Sky ● http://gitinsky.com ● alex@gitinsky.com ● http://meetup.com/Docker-SPb