Депрокрастинируем Docker: контейнеры здесь и сейчасRuslan Sharipov
Депрокрастинируем Docker: контейнеры здесь и сейчас (мастер-класс). Руслан Шарипов (7bits), Денис Нелюбин (Avelix).
При подходе к любому важному делу или к изучению интересной технологии очень важно сделать первый шаг. Этот шаг может быть совсем шажочком, небольшим движением вперёд, но, часто бывает, что именно такие шаги позволяют добиваться завершения дел до конца.
В последнее время часто наши коллеги и знакомые грозятся погуглить, изучить, разобраться, исследовать, ознакомиться, попробовать, начать использовать Docker, и постоянно откладывают это дело в долгий ящик. Кто-то боится новизны технологии, кто-то хочет задать тонну вопросов, а кто-то просто не понимает, нужна ли технология для него.
В рамках этого мастер класса мы сделаем первый шаг к тому, чтобы попробовать на практике то, что есть сейчас Docker. Мы рассмотрим, что у него под капотом: какие технологии стоят за популярным названием, как работает Docker изнутри, обсудим и научимся использовать на практике контейнеры, registry и инструменты, упрощающие процесс доставки и запуска контейнеров на серверах, обсудим и найдём решения для возникающих проблем, напишем тесты и научимся тестировать инфраструктуру в контейнерах.
Presented: 6th June, 2015
Материалы со встречи:
https://getdev.net/Event/docker
Docker: зачем нужен и почему выстрелил? Контейнеры против виртуальных машин - кто лучше? Docker на Windows: как и когда? А также демо: создание и deploy контейнера на ваших глазах
Михаил Боднарчук "Docker для PHP разработчиков" Fwdays
Это не рассказ о том, как из разработчика стать крутым DevOpsом. Это доклад о том, как можно сделать процесс разработки и развертки приложения комфортнее и эффективнее вместе с прогрессивной технологией контейнеризации - Docker.
В этом докладе я затрону следующие темы:
Docker - это то модное слово, которое все должны знать
Дирижирование оркестром вместе с Docker Compose
Создание и настройка рабочего окружения в Docker
Построение сервисно-ориентированых приложений
Безболезненное развертывание приложений с Shipyard
То, чего не хватало для Continuous Integration - запуск параллельных билдов
Депрокрастинируем Docker: контейнеры здесь и сейчасRuslan Sharipov
Депрокрастинируем Docker: контейнеры здесь и сейчас (мастер-класс). Руслан Шарипов (7bits), Денис Нелюбин (Avelix).
При подходе к любому важному делу или к изучению интересной технологии очень важно сделать первый шаг. Этот шаг может быть совсем шажочком, небольшим движением вперёд, но, часто бывает, что именно такие шаги позволяют добиваться завершения дел до конца.
В последнее время часто наши коллеги и знакомые грозятся погуглить, изучить, разобраться, исследовать, ознакомиться, попробовать, начать использовать Docker, и постоянно откладывают это дело в долгий ящик. Кто-то боится новизны технологии, кто-то хочет задать тонну вопросов, а кто-то просто не понимает, нужна ли технология для него.
В рамках этого мастер класса мы сделаем первый шаг к тому, чтобы попробовать на практике то, что есть сейчас Docker. Мы рассмотрим, что у него под капотом: какие технологии стоят за популярным названием, как работает Docker изнутри, обсудим и научимся использовать на практике контейнеры, registry и инструменты, упрощающие процесс доставки и запуска контейнеров на серверах, обсудим и найдём решения для возникающих проблем, напишем тесты и научимся тестировать инфраструктуру в контейнерах.
Presented: 6th June, 2015
Материалы со встречи:
https://getdev.net/Event/docker
Docker: зачем нужен и почему выстрелил? Контейнеры против виртуальных машин - кто лучше? Docker на Windows: как и когда? А также демо: создание и deploy контейнера на ваших глазах
Михаил Боднарчук "Docker для PHP разработчиков" Fwdays
Это не рассказ о том, как из разработчика стать крутым DevOpsом. Это доклад о том, как можно сделать процесс разработки и развертки приложения комфортнее и эффективнее вместе с прогрессивной технологией контейнеризации - Docker.
В этом докладе я затрону следующие темы:
Docker - это то модное слово, которое все должны знать
Дирижирование оркестром вместе с Docker Compose
Создание и настройка рабочего окружения в Docker
Построение сервисно-ориентированых приложений
Безболезненное развертывание приложений с Shipyard
То, чего не хватало для Continuous Integration - запуск параллельных билдов
Зачем нужен и что такое докер. Чем он отличается от виртуальных машин. Как создать, сохранить и запустить свой докер-контейнер.
Обновленная презентация с шестого 4front митапа в Минске.
TК°Conf. Микросервисы и Docker. Глеб Паньшин.TKConf
Когда вы пытаетесь следовать гибким методологиям, создавать небольшие автономные команды, микросервисы в вашем проекте появляются естественным путем. Или нет. Обязательно поговорим о "Монолит vs. Микросервисы". И хотя эти маленькие трудяги помогают вам scale и достигать agility они неплохо добавляют вам проблем с доставкой и разработкой.
В заключении попробую ответить на вопрос как деплоить 5 или 50 микросервисов? Не знаю, но давайте попробуем Docker.
SETCON'18 - Vitali Fokin - Kubernetes 101Nadzeya Pus
Обзор возможностей Kubernetes, зачем он нужен, кому и когда, а также немного хороших практик по развертыванию и разработке Kubernetes-powered приложений.
Основы Docker. История проекта, OpenContainer Initiative, архитектура, пример композиции контейнеров на примере поискового движка YASEn, используемого для поиска билетов в Aviasales.ru.
Docker в работе: взгляд на использование в Badoo через годBadoo Development
Мы в Badoo используем Docker больше года и на нашем примере попробуем поговорить о возможных моделях его применения.
- 85% наших сервисов работают в контейнерах: для чего и почему мы перенесли свои сервисы в контейнеры.
- Как мы подходим к сборке образов? Базовый образ: используем слои, следим за системными обновлениями.
- Автоматизация процесса сборки образов с нашими сервисами: Jira flow, Teamcity и другие страшные для админа слова.
- Лучшее ли место для тестирования production? Путь образа от сборки до Production.
- baDocker: webUI своими руками: зачем и почему?
- Как дать возможность управлять запущенными сервисами и их версиями разработчику.
- Docker: мониторинг и анализ работающих контейнеров.
Доклад Антона Турецкого на Highload 2015.
https://youtu.be/UgUuF_qZmWc
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)Ontico
РИТ++ 2017
Зал Сан-Паулу, 5 июня, 15:00
Тезисы:
http://ritfest.ru/2017/abstracts/2653.html
Новые микросервисы появляются, но монолит никуда не исчезает. Мы в Avito разрабатываем и деплоим сервисы с помощью связки Docker и Kubernetes. Зачастую интегрировать монолит с сервисами довольно проблематично. А что, если монолит тоже завернуть в Docker+Kubernetes и применять те же практики, что и для микросервисов?
В докладе речь пойдёт о том, как изменилась Dev-среда в Avito в связи с переходом на микросервисную архитектуру. В частности, поговорим про:
- подход "legacy in a box";
- то, как мы решали проблемы с базами и sphinxsearch;
- то, как Docker и Kubernetes помогли нам сократить различия между окружениями;
- Developer Experience.
Доклад будет полезен как командам, планирующим или переживающим распил монолита, так и всем тем, кому приходится работать со сторонними legacy-системами.
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)Ontico
Потребность в отстроенном процессе Continuous Delivery встает перед каждым развивающимся highload-проектом. Чем больше серверов и составных приложений, чем выше динамика релизов, тем раньше проект сталкивается с данной потребностью, и тем острее она стоит.
Многие команды эксплуатации смогли отстроить этот процесс, некоторые добились впечатляющих результатов, а некоторые — потерпели неудачу. Но все из них знают, что их процесс можно улучшить: сделать быстрее, надежнее, предсказуемее и удобнее.
В этом докладе я хочу обобщить и систематизировать лучшие практики построения процесса Continuous Delivery с использованием актуальных Open Source технологий (Docker, Chef, Gitlab, Kubernetes), а также обозначить известные проблемы и потенциальные пути их решения.
Будет предпринята попытка однозначно ответить на следующие практические вопросы:
- Почему пора всем переходить на Docker? Как лучше собирать Docker-образы? Как лучше доставлять и хранить Docker-образы?
- Как правильно построить процесс разработки Infrastructure as Code (IaC)?
- Как оптимально интегрировать автоматическое и ручное тестирование в процесс Continuous Delivery?
- Как перестать бояться регулярных выкатов новых версий и сделать этот процесс надежным?
- Почему Continuous Delivery не заканчивается релизом новой версии и зачем нужен Kubernetes?
Зачем нужен и что такое докер. Чем он отличается от виртуальных машин. Как создать, сохранить и запустить свой докер-контейнер.
Обновленная презентация с шестого 4front митапа в Минске.
TК°Conf. Микросервисы и Docker. Глеб Паньшин.TKConf
Когда вы пытаетесь следовать гибким методологиям, создавать небольшие автономные команды, микросервисы в вашем проекте появляются естественным путем. Или нет. Обязательно поговорим о "Монолит vs. Микросервисы". И хотя эти маленькие трудяги помогают вам scale и достигать agility они неплохо добавляют вам проблем с доставкой и разработкой.
В заключении попробую ответить на вопрос как деплоить 5 или 50 микросервисов? Не знаю, но давайте попробуем Docker.
SETCON'18 - Vitali Fokin - Kubernetes 101Nadzeya Pus
Обзор возможностей Kubernetes, зачем он нужен, кому и когда, а также немного хороших практик по развертыванию и разработке Kubernetes-powered приложений.
Основы Docker. История проекта, OpenContainer Initiative, архитектура, пример композиции контейнеров на примере поискового движка YASEn, используемого для поиска билетов в Aviasales.ru.
Docker в работе: взгляд на использование в Badoo через годBadoo Development
Мы в Badoo используем Docker больше года и на нашем примере попробуем поговорить о возможных моделях его применения.
- 85% наших сервисов работают в контейнерах: для чего и почему мы перенесли свои сервисы в контейнеры.
- Как мы подходим к сборке образов? Базовый образ: используем слои, следим за системными обновлениями.
- Автоматизация процесса сборки образов с нашими сервисами: Jira flow, Teamcity и другие страшные для админа слова.
- Лучшее ли место для тестирования production? Путь образа от сборки до Production.
- baDocker: webUI своими руками: зачем и почему?
- Как дать возможность управлять запущенными сервисами и их версиями разработчику.
- Docker: мониторинг и анализ работающих контейнеров.
Доклад Антона Турецкого на Highload 2015.
https://youtu.be/UgUuF_qZmWc
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)Ontico
РИТ++ 2017
Зал Сан-Паулу, 5 июня, 15:00
Тезисы:
http://ritfest.ru/2017/abstracts/2653.html
Новые микросервисы появляются, но монолит никуда не исчезает. Мы в Avito разрабатываем и деплоим сервисы с помощью связки Docker и Kubernetes. Зачастую интегрировать монолит с сервисами довольно проблематично. А что, если монолит тоже завернуть в Docker+Kubernetes и применять те же практики, что и для микросервисов?
В докладе речь пойдёт о том, как изменилась Dev-среда в Avito в связи с переходом на микросервисную архитектуру. В частности, поговорим про:
- подход "legacy in a box";
- то, как мы решали проблемы с базами и sphinxsearch;
- то, как Docker и Kubernetes помогли нам сократить различия между окружениями;
- Developer Experience.
Доклад будет полезен как командам, планирующим или переживающим распил монолита, так и всем тем, кому приходится работать со сторонними legacy-системами.
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)Ontico
Потребность в отстроенном процессе Continuous Delivery встает перед каждым развивающимся highload-проектом. Чем больше серверов и составных приложений, чем выше динамика релизов, тем раньше проект сталкивается с данной потребностью, и тем острее она стоит.
Многие команды эксплуатации смогли отстроить этот процесс, некоторые добились впечатляющих результатов, а некоторые — потерпели неудачу. Но все из них знают, что их процесс можно улучшить: сделать быстрее, надежнее, предсказуемее и удобнее.
В этом докладе я хочу обобщить и систематизировать лучшие практики построения процесса Continuous Delivery с использованием актуальных Open Source технологий (Docker, Chef, Gitlab, Kubernetes), а также обозначить известные проблемы и потенциальные пути их решения.
Будет предпринята попытка однозначно ответить на следующие практические вопросы:
- Почему пора всем переходить на Docker? Как лучше собирать Docker-образы? Как лучше доставлять и хранить Docker-образы?
- Как правильно построить процесс разработки Infrastructure as Code (IaC)?
- Как оптимально интегрировать автоматическое и ручное тестирование в процесс Continuous Delivery?
- Как перестать бояться регулярных выкатов новых версий и сделать этот процесс надежным?
- Почему Continuous Delivery не заканчивается релизом новой версии и зачем нужен Kubernetes?
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Ontico
Мы в Badoo используем Docker больше года и на нашем примере попробуем поговорить о возможных моделях его применения.
+ 85% наших сервисов работают в контейнерах: для чего и почему мы перенесли свои сервисы в контейнеры.
+ Как мы подходим к сборке образов? Базовый образ: используем слои, следим за системными обновлениями.
+ Автоматизация процесса сборки образов с нашими сервисами: Jira flow, Teamcity и другие страшные для админа слова.
+ Лучшее ли место для тестирования production? Путь образа от сборки до Production.
+ baDocker: webUI своими руками: зачем и почему?
+ Как дать возможность управлять запущенными сервисами и их версиями разработчику.
+ Docker: мониторинг и анализ работающих контейнеров.
Контроль окружения сборки C++ проектов с помощью Docker. Павел Филонов. CoreH...corehard_by
При сборке C++ проектов под различные компиляторы и операционные системы часто возникает необходимость контролировать окружение (версии компиляторов, ОС и библиотек), в котором происходит сборка проекта. В докладе рассмотрен подход к этой задаче с помощью упаковки сборочного окружения в Docker образы.
Как мы собираем проекты в выделенном окружении в Windows DockerPositive Hack Days
1. Обзор Windows Docker (кратко)
2. Как мы построили систему билда приложений в Docker (Visual Studio\Mongo\Posgresql\etc)
3. Примеры Dockerfile (выложенные на github)
4. Отличия процессов DockerWindows от DockerLinux (Долгий билд, баги, remote-регистр.)
Docker + Selenium Webdriver в рамках Continuous IntegrationCOMAQA.BY
Автоматизация как сервис включает в себя две основные задачи: написание автотестов и создание инфраструктуры запуска тестов. В данном докладе будет рассмотрено решение второй задачи с использованием Docker.
Docker - лёгкий и юркий родственник виртуальных машин. Представьте, что настроенное окружение для запуска тестов легко упаковать в некий контейнер с сохранением всех зависимостей, а после - продолжить разработку, тестирование и постоянное внедрение в абсолютно другой среде. Docker помогает в решении типичных проблем, возникающих при разворачивании и поддержке Continuous Integration. Использование Docker позволяет избежать системных и языковых конфликтов путём изоляции в контейнеры, запускать больше задач в различных конфигурациях среды. В качестве примера в докладе будет предложено создание конфигурации Docker-контейнера, выполняющего функцию CI для непрерывного запуска тестов, написанных на Selenium WebDriver.
Codeception + Docker + Robo и что из этого вышлоCOMAQA.BY
Параллелизация тестов, а именно: лучший пхп тулл для автоматизации (Codeception); основы Docker контейнирезации; robo - что это и зачем он нам нужен; profit
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...Provectus
Aleksandr Matkovskiy – Head of IT Department lives and works with the motto "Scaling and load balancing is our all!". Therefore, he has 3 sons and dreams to find DEV for his OPS.
You will be able to see how the CI / CD was created and saved our lives. From concept to the final product.
Vladislav Anikin – Team Leader & Software Architect, specializing in SAAS flexible and scalable solutions for business. Driving DDD/TDD oriented squad of awesome SOLID developers.
You will be able to see how the CI / CD was created and saved our lives. From concept to the final product.
2. 2
• ОС разработчика
• Стенды для разработки
• Образы виртуальных машин
• Контейнеры
Гибкость
Простота
Выбор пути
3. 3
#1 Каждый разрабочик
всё устанавливает себе сам
• Комфортно
• Везде localhost
• Можно копипастить из мануала по установке
• Как правило ручная настройка
• Разные ОС, дистрибутивы
• Разные проекты или разные части поекта требуют разные версии ПО
• Версии, конфиги ПО нигде не закреплены, не хранятся в репозитории
• Поддержка legacy- проектов
"- Баг?? А у меня работает!"
4. 4
#2 Стенды-песочницы для
разработчика
• Можно поднять до прихода нового сотрудника
• Возможность использовать систему управления конфигурацией(Ansible, Chef,
Puppet...) для настройки нескольких машин
• Полная изоляция
• Всё делает админ, а не разработчик
• Дорого
• Разработчики с root-правами: бардак, только админ с root: админ постоянно
отвлекается
• В идеале это один стенд одного проектам для одного разработчика (т.е. в
сумме n x m стендов)
Dev: "- А можешь ещё поставить Redis?" Ops: "- Нет! Занят!!"
5. 5
#3 Локальные VM (Vagrant)
• Изоляция разных проектов в локальном окружении
• Возможность использовать систему управления конфигурацией для
настройки и хранить её в общем репозитории т.е. у всех один и тот же конфиг
• Настройка окружения с Symfony есть в официальной документации
• Долгая установка и конфигурация
• Это ОС: требует много памяти на диске, много оперативной памяти, много
процессорных ресурсов
• Очень сложно воссоздать распределённую систему
-“О! А этот конфиг, это также как на продакшне?" -“Нет... :("
6. 6
Docker vs Vagrant: отличия
Docker использует виртуализацию на уровне процессов ОС
7. 7
Docker: инструменты
• docker-engine: центральная часть докера, демон работающий на хост-машине
и умеющий скачивать и заливать образы, запускать из них контейнеры,
следить за запущенными контейнерами, собирать логи и настраивать сеть
между контейнерами (а с версии 0.8 и между машинами).
• docker: консольная утилита для управления docker-демоном по HTTP
• docker-compose: инструмент для создания и запуска мульти- контейнерных
докер- приложений
• docker-swarm: нативное решение докера для создания кластеров
• docker-machine: набор инструментов для запуска контейнеров на различных
инфраструктура-как-сервис платформах, а также VMWare, Virtualbox итд
• Docker Hub, Docker Store: репозиторий для хранения образов контейнеров
(неофициальные и официальные)
8. 8
Docker: основные понятия
• Image: упакованная версия приложения вместе с зависимостями
и необходимым окружением необходимым для запуска
(как класс в ООП)
• Container: контейнер это запущенный экземпляр образа
(как объект в ООП)
• Volume: область постоянного хранения файлов, данные не
теряются при пересборке или удалении конейнера
• Dockerfile: файл конфигурации контейнера для сборки
9. 9
Docker: внутреннее устройство
• Инструменты изоляции(наподобии chroot jail): LXC(<0.9),
libcontainer (runc, >=0.9)
• "слоёная" фаловая система AUFS (переиспользуемость,
Copy-On-Write)
Образ содержит слои(снепшоты) каждого отдельного
изменения внутреннего содержания.
11. 11
Docker: внутреннее устройство
Запущенный контейнер можно описать как данный
объединённый слой доступный для записи и
изолированное от хост- машины пространство процессов с
процессом внутри(в идеале он должен быть только один)
14. 14
Dockerfile
• FROM - Указывается базовый образ
• ADD - Копирование файлов с локальной машины
• RUN - Запуск команды внути контейнера, например apt-get install
• EXPOSE - Открытие порта для внешнего доступа
• CMD - Команда для основного процесса контейнера (может быть только одна CMD)
• ENTRYPOINT - Executable для запуска CMD, по умолчанию "/bin/sh -c”
в "docker run -i -t ubuntu bash": FROM=ubuntu CMD=bash ENTRYPOINT=/bin/sh -c
• USER - Установить юзера для RUN, CMD и ENTRYPOINT (по умолчанию, root)
• Команды выполняются декларативно (порядок имеет значение)
15. 15
#4 Контейнеры (Docker)
• Изоляция на уровне процессов
• Можно точь-в-точь повторить продакшн локально
• Хорошо подходит для описания микросервисов, локально можно
разрабатывать, дебажить несколько сервисов одновременно
• Чем крупнее проект, тем больше прибыль от внедрения докера
• Порог вхождения довольно высокий, сложнее чем другие варианты
• Продукт очень бурно развивался, в сети много примеров с конфигурацией
прошлых версий и вовсе нерабочих
18. 18
Образы или сборка локально
Для разработки в репозитории удобнее хранить
исходники контейнеров: Dockerfile от образа
официального репозитория дистрибутива (base
image)
Там где достаточно дефолтной конфигурации
(например, сборка логов) удобно брать готовые
официальные образы.
19. 19
Логирование в стиле Docker
Переполнение файла логов docker
Варианты:
• Использовать logrotate: /var/lib/docker/containers/*/*.log
• Или выключить сохранение логов: --log-driver=none
21. 21
Логирование в стиле Docker
Logspout! собирает сообщения из STDIN и STDERR
контейнеров, которые мы можем прочитать в Logstash
22. 22
Типы томов (volumes)
• Bind-mounts — монтирование внешних папок
/host:/container
• Data-only containers - сохранение данных из
контейнера /container, использование в других
контейнерах с помощью --volumes-from(deprecated)
• Named volumes (>=1.10) - возможность закрепить имя
за томом volume_name:/container, не нужен volumes-
from.
• После первого использования том получает
правильные права доступа и наполняется контентом
(initial volume seeding)
23. 23
Переменные окружения
Для того чтобы удобно собирать
и пользоваться окружением на
разных машинах, можно
использовать переменные
окружения и класть их в .env
Можно пересобирать PHP с
Xdebug или Blackfire в
зависимости от надобности
24. 24
networks: vs links:
Вместо того чтобы указывать строго определённые связи
links(deprecated) от контейнера к контейнеру, окружить
весь проект одной bridge сетью
Docker-compose зарезолвит имена контейнеров в IP
адреса автоматически
25. 25
Внешние сервисы и доступ к
хост машине
Для доступа к внешним сервисам, а так же хост машине
пока приходится использовать extra_hosts,
прописывающий их в /etc/hosts контейнера