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

Депрокрастинируем Docker: контейнеры здесь и сейчас

Депрокрастинируем Docker: контейнеры здесь и сейчас

Депрокрастинируем Docker: контейнеры здесь и сейчас (мастер-класс). Руслан Шарипов (7bits), Денис Нелюбин (Avelix).

При подходе к любому важному делу или к изучению интересной технологии очень важно сделать первый шаг. Этот шаг может быть совсем шажочком, небольшим движением вперёд, но, часто бывает, что именно такие шаги позволяют добиваться завершения дел до конца.

В последнее время часто наши коллеги и знакомые грозятся погуглить, изучить, разобраться, исследовать, ознакомиться, попробовать, начать использовать Docker, и постоянно откладывают это дело в долгий ящик. Кто-то боится новизны технологии, кто-то хочет задать тонну вопросов, а кто-то просто не понимает, нужна ли технология для него.

В рамках этого мастер класса мы сделаем первый шаг к тому, чтобы попробовать на практике то, что есть сейчас Docker. Мы рассмотрим, что у него под капотом: какие технологии стоят за популярным названием, как работает Docker изнутри, обсудим и научимся использовать на практике контейнеры, registry и инструменты, упрощающие процесс доставки и запуска контейнеров на серверах, обсудим и найдём решения для возникающих проблем, напишем тесты и научимся тестировать инфраструктуру в контейнерах.

Sharipov Ruslan

June 06, 2015
Tweet

More Decks by Sharipov Ruslan

Other Decks in Programming

Transcript

  1. Депрокрастинируем Docker: контейнеры здесь и сейчас 29-ый Омский IT субботник,

    06-06-2015 https://vk.com/omskit Денис Нелюбин @den_gelin Руслан Шарипов @sharipov_ru
  2. Что такое Docker? Docker is an open platform for developers

    and sysadmins to build, ship, and run distributed applications
  3. Зачем? - Собрал один раз - запустил идентичное окружение везде

    - Иммутабельность: нет проблемы с уже установленным набором софта - Изоляция рантайма - Выделение ресурсов
  4. Отличия Docker от VMs - Контейнеры запускаются в той же

    операционной системе,что и хост - AuFS в качестве файловой системы - Ресурсы между хостом и контейнером расшарены - Быстрый запуск (секунды против минут для полностью виртуализированной системы) - VM живёт вечно, контейнер - запускается и удаляется
  5. Как работает Docker - изоляция root fs - изоляция процессов

    - абстракция над сетью - cgroups - capabilities
  6. План мастер класса Упражнение 1 Работаем с образами, контейнерами, registry

    Упражнение 2 Пишем Dockerfile, тестируем с RSpec и Serverspec Упражнение 3 Деплоим webapp + db, оркестрируем ансиблом, балансим контейнеры через haproxy
  7. Docker container Контейнер - linux процесс, запущенный на хосте с

    docker. Легковесный аналог виртуальных машин Контейнеры запускаются из docker images (образов)
  8. Docker container Каждый контейнер имеет: - файлововую систему - сеть

    - дерево процессов - выделенные ресурсы
  9. Volumes: Demo container> ls -l / container> cd /my-volume container>

    echo hello-volume > \ /my-volume/new_file container> exit
  10. Dockerfile: пример FROM centos:centos6 RUN rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm RUN yum

    install -y npm COPY . /src RUN cd /src; npm install EXPOSE 8080 CMD ["node", "/src/index.js”]
  11. Задача: haproxy, docker, ansible • Конфиг nginx HAProxy с двумя

    upstreams • Ansible для доставки контейнеров куда угодно • Билд, запуск • Zero-downtime: как делать правильно? https://bitbucket.org/gelin/docker-deploy-sample
  12. Как ещё можно деплоиться? Docker compose (fig) + Swarm +

    Docker Machine => not production ready Google Kubernetes http://kubernetes.io Amazon Elastic Beanstalk Panamax http://panamax.io Cloudify Cloud66 CoreOS + fleet + etcd Apache Mesos NewRelic Centurion => not production ready Ansible/Chef/Puppet + Docker ...и десятки других сервисов...