Депрокрастинируем Docker: контейнеры здесь и сейчасRuslan Sharipov
Депрокрастинируем Docker: контейнеры здесь и сейчас (мастер-класс). Руслан Шарипов (7bits), Денис Нелюбин (Avelix).
При подходе к любому важному делу или к изучению интересной технологии очень важно сделать первый шаг. Этот шаг может быть совсем шажочком, небольшим движением вперёд, но, часто бывает, что именно такие шаги позволяют добиваться завершения дел до конца.
В последнее время часто наши коллеги и знакомые грозятся погуглить, изучить, разобраться, исследовать, ознакомиться, попробовать, начать использовать Docker, и постоянно откладывают это дело в долгий ящик. Кто-то боится новизны технологии, кто-то хочет задать тонну вопросов, а кто-то просто не понимает, нужна ли технология для него.
В рамках этого мастер класса мы сделаем первый шаг к тому, чтобы попробовать на практике то, что есть сейчас Docker. Мы рассмотрим, что у него под капотом: какие технологии стоят за популярным названием, как работает Docker изнутри, обсудим и научимся использовать на практике контейнеры, registry и инструменты, упрощающие процесс доставки и запуска контейнеров на серверах, обсудим и найдём решения для возникающих проблем, напишем тесты и научимся тестировать инфраструктуру в контейнерах.
Presented: 6th June, 2015
Зачем нужен и что такое докер. Чем он отличается от виртуальных машин. Как создать, сохранить и запустить свой докер-контейнер.
Обновленная презентация с шестого 4front митапа в Минске.
Материалы со встречи:
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
Зачем нужен и что такое докер. Чем он отличается от виртуальных машин. Как создать, сохранить и запустить свой докер-контейнер.
Обновленная презентация с шестого 4front митапа в Минске.
Материалы со встречи:
https://getdev.net/Event/docker
Docker: зачем нужен и почему выстрелил? Контейнеры против виртуальных машин - кто лучше? Docker на Windows: как и когда? А также демо: создание и deploy контейнера на ваших глазах
Михаил Боднарчук "Docker для PHP разработчиков" Fwdays
Это не рассказ о том, как из разработчика стать крутым DevOpsом. Это доклад о том, как можно сделать процесс разработки и развертки приложения комфортнее и эффективнее вместе с прогрессивной технологией контейнеризации - Docker.
В этом докладе я затрону следующие темы:
Docker - это то модное слово, которое все должны знать
Дирижирование оркестром вместе с Docker Compose
Создание и настройка рабочего окружения в Docker
Построение сервисно-ориентированых приложений
Безболезненное развертывание приложений с Shipyard
То, чего не хватало для Continuous Integration - запуск параллельных билдов
Основы Docker. История проекта, OpenContainer Initiative, архитектура, пример композиции контейнеров на примере поискового движка YASEn, используемого для поиска билетов в Aviasales.ru.
Процесс разработки и тестирования с Docker + gitlab ciАлександр Сигачев
Доклад - https://www.youtube.com/watch?v=lJsqRwULRVA
Какие проблемы решаем?
быстрый вход нового разработчика в проект
стандартизация настроек разработчиков
переключение между проектами - разные версии ПО и библиотек (mysql 5.6/5.7, node 0.12/7.2)
приучаем разработчиков к сетевому взаимодействию компонентов
Microservice - масштабирование/разделения разработки
Делим ресурсы staging среды между проектами
TК°Conf. Микросервисы и Docker. Глеб Паньшин.TKConf
Когда вы пытаетесь следовать гибким методологиям, создавать небольшие автономные команды, микросервисы в вашем проекте появляются естественным путем. Или нет. Обязательно поговорим о "Монолит vs. Микросервисы". И хотя эти маленькие трудяги помогают вам scale и достигать agility они неплохо добавляют вам проблем с доставкой и разработкой.
В заключении попробую ответить на вопрос как деплоить 5 или 50 микросервисов? Не знаю, но давайте попробуем Docker.
О чем нам могут рассказать access логи вебсервера? Поиск аномалий и отклонений от нормы? Откуда наши пользователи? Город? Страна? Сайт? Сколько запросов генерируют роботы? Когда в последний раз к нам приходил поисковик для индексации? Какая динамика по ошибкам и страницам отсутствующим на сайте?
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...Badoo Development
Рассказываем о том, как мы жили без Docker'а и зачем его решили использовать. А также описываем процесс внедрения в CI и, в частности, в тесты, плюс с какими проблемами столкнулись и как их побороли.
— Как сделать сеть между Docker контейнерами и дать доступ к ней во вне без спецрешений;
— Какие есть решения в Docker для сетевого взаимодействия;
— сравнение weave, docker netwirking, macvlan.
— Краткий экскурс в предыдущие доклады;
- Описание нашей системы сбора статистики с контейнеров и рассказ почему мы решили отказаться от cadvisord;
- Автоматическая система сборки контейнеров и интеграция с teamcity;
— Наброс о системе генерации и хранения конфигураций.
- Краткая вводная про Docker (namespaces, cgroups и как Docker все это использует)
- Как заходить в Docker из вашего софта?
- Примеры: pam_docker и php_fpm_docker
Андрей Михайлов. Vagrant. Быстрое развертывание средыDrupalSib
DrupalCafe#9@Novosibirsk https://vk.com/drupalcafe9
Чтобы избежать больших затрат на развертывание сред разработки и тестирования, приближенных к среде эксплуатации (development stage vs production stage parity), всё большую популярность приобретает виртуализация сред.
Доклад о том, как создавать соответствующую репродуцируемую среду разработки с использованием Vagrant.
-----
Сайт сибирского сообщества друпаллеров ДрупалСиб drupalsib.ru
Группа сибирского сообщества друпаллеров Вконтакте vk.com/drupalsib
Партнер Группа компаний И20 i20.biz
Основы Docker. История проекта, OpenContainer Initiative, архитектура, пример композиции контейнеров на примере поискового движка YASEn, используемого для поиска билетов в Aviasales.ru.
Процесс разработки и тестирования с Docker + gitlab ciАлександр Сигачев
Доклад - https://www.youtube.com/watch?v=lJsqRwULRVA
Какие проблемы решаем?
быстрый вход нового разработчика в проект
стандартизация настроек разработчиков
переключение между проектами - разные версии ПО и библиотек (mysql 5.6/5.7, node 0.12/7.2)
приучаем разработчиков к сетевому взаимодействию компонентов
Microservice - масштабирование/разделения разработки
Делим ресурсы staging среды между проектами
TК°Conf. Микросервисы и Docker. Глеб Паньшин.TKConf
Когда вы пытаетесь следовать гибким методологиям, создавать небольшие автономные команды, микросервисы в вашем проекте появляются естественным путем. Или нет. Обязательно поговорим о "Монолит vs. Микросервисы". И хотя эти маленькие трудяги помогают вам scale и достигать agility они неплохо добавляют вам проблем с доставкой и разработкой.
В заключении попробую ответить на вопрос как деплоить 5 или 50 микросервисов? Не знаю, но давайте попробуем Docker.
О чем нам могут рассказать access логи вебсервера? Поиск аномалий и отклонений от нормы? Откуда наши пользователи? Город? Страна? Сайт? Сколько запросов генерируют роботы? Когда в последний раз к нам приходил поисковик для индексации? Какая динамика по ошибкам и страницам отсутствующим на сайте?
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...Badoo Development
Рассказываем о том, как мы жили без Docker'а и зачем его решили использовать. А также описываем процесс внедрения в CI и, в частности, в тесты, плюс с какими проблемами столкнулись и как их побороли.
— Как сделать сеть между Docker контейнерами и дать доступ к ней во вне без спецрешений;
— Какие есть решения в Docker для сетевого взаимодействия;
— сравнение weave, docker netwirking, macvlan.
— Краткий экскурс в предыдущие доклады;
- Описание нашей системы сбора статистики с контейнеров и рассказ почему мы решили отказаться от cadvisord;
- Автоматическая система сборки контейнеров и интеграция с teamcity;
— Наброс о системе генерации и хранения конфигураций.
- Краткая вводная про Docker (namespaces, cgroups и как Docker все это использует)
- Как заходить в Docker из вашего софта?
- Примеры: pam_docker и php_fpm_docker
Андрей Михайлов. Vagrant. Быстрое развертывание средыDrupalSib
DrupalCafe#9@Novosibirsk https://vk.com/drupalcafe9
Чтобы избежать больших затрат на развертывание сред разработки и тестирования, приближенных к среде эксплуатации (development stage vs production stage parity), всё большую популярность приобретает виртуализация сред.
Доклад о том, как создавать соответствующую репродуцируемую среду разработки с использованием Vagrant.
-----
Сайт сибирского сообщества друпаллеров ДрупалСиб drupalsib.ru
Группа сибирского сообщества друпаллеров Вконтакте vk.com/drupalsib
Партнер Группа компаний И20 i20.biz
Docker в работе: взгляд на использование в Badoo через годBadoo Development
Мы в Badoo используем Docker больше года и на нашем примере попробуем поговорить о возможных моделях его применения.
- 85% наших сервисов работают в контейнерах: для чего и почему мы перенесли свои сервисы в контейнеры.
- Как мы подходим к сборке образов? Базовый образ: используем слои, следим за системными обновлениями.
- Автоматизация процесса сборки образов с нашими сервисами: Jira flow, Teamcity и другие страшные для админа слова.
- Лучшее ли место для тестирования production? Путь образа от сборки до Production.
- baDocker: webUI своими руками: зачем и почему?
- Как дать возможность управлять запущенными сервисами и их версиями разработчику.
- Docker: мониторинг и анализ работающих контейнеров.
Доклад Антона Турецкого на Highload 2015.
https://youtu.be/UgUuF_qZmWc
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Ontico
Мы в Badoo используем Docker больше года и на нашем примере попробуем поговорить о возможных моделях его применения.
+ 85% наших сервисов работают в контейнерах: для чего и почему мы перенесли свои сервисы в контейнеры.
+ Как мы подходим к сборке образов? Базовый образ: используем слои, следим за системными обновлениями.
+ Автоматизация процесса сборки образов с нашими сервисами: Jira flow, Teamcity и другие страшные для админа слова.
+ Лучшее ли место для тестирования production? Путь образа от сборки до Production.
+ baDocker: webUI своими руками: зачем и почему?
+ Как дать возможность управлять запущенными сервисами и их версиями разработчику.
+ Docker: мониторинг и анализ работающих контейнеров.
Codeception + Docker + Robo и что из этого вышлоCOMAQA.BY
Параллелизация тестов, а именно: лучший пхп тулл для автоматизации (Codeception); основы Docker контейнирезации; robo - что это и зачем он нам нужен; profit
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальноеОмские ИТ-субботники
Максим Верзаков, разработчик Crystalnix
Мы не боимся использовать Docker, и неплохо в этом преуспеваем. Я расскажу, как еще можно использовать Docker и почему это удобный инструмент не только для разработки, но и для жизни.
1. Юрий Трухин
cloud computing expert | InfoboxCloud
ytrukhin@infobox.ru
http://infoboxcloud.ru
Как не стать рабом облака?
в
PaaS 2.0 с Docker
2. О чем поговорим?
• Как работает Docker
• Как использовать Docker
• Dockerfile
• Новое в Docker 1.9
• Docker Swarm
• Docker Compose
• Контейнеры
• Как и где установить и попробовать
• UI для Docker – надо ли?
• Зачем все это???
3. Контейнеры
До 1960х годов большинство грузов перевозилось вперемешку
Что будет, если наковальни положить на мешки с бананами?
1/2 времени перевозки - погрузка, разгрузка, перегрузка
Сегодня 18 миллионов контейнеров - 90% мировой торговли
4. Контейнеры
Контейнеры внутри компьютера
Требуется Linux Kernel 3.8 и выше
Практически любое приложение может быть упаковано в контейнер
Приложение работает у пользователя так же, как и у разработчика
5. Как работает Docker
Клиент-серверное приложение. docker cli и Rest API
bootfs -> rootfs read only -> fs на запись
реестры: публичные (hub.docker.com) и приватные
контейнеры: при старте слой записи пуст
# docker info
6. Работа с контейнерами
sudo docker run -i -t ubuntu /bin/bash
Флаг -i оставляет STDIN открытым, даже, когда вы не присоединены к контейнеру. Флаг -t назначает
псевдо-tty контейнеру. Таким образом создается интерактивный интерфейс к контейнеру. Так же мы
указываем название образа (ubuntu — базовый образ) и шелл /bin/bash.
Подключение к контейнеру
docker exec -it container_name bash
Список запущенных контейнеров
docker ps
Контейнер-демон
docker run --name city -d ubuntu /bin/bash -c "while true; do echo hello world; sleep 1; done"
Перемещение данных между контейнером и хостом
docker cp <путь к данным на хосте> <имя контейнера>:<путь>
теперь… и в обратную сторону!
Монтируем диски
docker run -v /tmp:/root -t -i <имя образа>
7. Переезд контейнеров
Сохраним образ в файл
docker save имя_образа > ~/transfer.tar
Восстановим на другом хосте
Список образов на хосте
docker images
docker commit <id контейнера> <имя образа>
Коммит изменений в образ
docker load < /tmp/transfer.tar
docker push trukhinyuri/nginx
Отправим образ на hub.docker.com
8. Dockerfile
DSL с инструкциями для построения образов Docker
docker build -t trukhinyuri/nginx ~/static_web
docker build -t trukhinyuri/nginx git@github.com:trukhinyuri/docker-static_web
Можно прямо из Git
docker build --no-cache -t trukhinyuri/nginx .
Отключение кеша сборок
9. Отладка Dockerfile
Можно создать контейнер из предпоследнего шага где упало и посмотреть в чем дело
docker run -i -t 066b799ea548 /bin/bash
docker logs <container_id>
docker logs --tail 10 <container_id> Последние 10 строк
docker logs --tail 0 -f <container_id> Что в логе сейчас
11. Инструкции Dockerfile: запуск процесса
CMD ["/bin/bash", “-l"] Какую команду запустить при старте контейнера
ENTRYPOINT ["/usr/sbin/nginx"] То же самое, но нельзя перегружать
docker run -d trukhinyuri/static_web -g "daemon off"
Параметр передается процессу в Entrypoint
Можно использовать вместе:
ENTRYPOINT ["/usr/sbin/nginx"]
CMD ["-h"]
12. Инструкции Dockerfile: откуда и кто
WORKDIR – откуда запускать CMD
USER – пользователь, от которого должен быть запущен образ
13. Инструкции Dockerfile: данные
VOLUME ["/opt/project"]
Точка монтирования тома. (пробрасываются через Union File System)
ADD software.lic /opt/application/software.lic
Добавляет файлы и папки из билд-окружения в образ. Источник - URL, файл или
директория
ADD http://wordpress.org/latest.zip /root/wordpress.zip
ADD latest.tar.gz /var/www/wordpress/
COPY conf.d/ /etc/apache2/
То же самое, но только для локальных данных
Отложенные триггеры, выполнятся когда образ используется как базовый для
другого образа
docker run -v /:/host ubuntu:ro ls /my_host
Как смонтировать всю файловую систему хоста в папку контейнера (не стоит так делать)
14. Инструкции Dockerfile: коммуникация
docker run -p 127.0.0.1:80:80
docker run -d -P --name web --link db:db trukhinyuri/webapp python app.py
docker run -p 80:80/udp
Проброс портов
Просмотр переменных окружения
Линковка
15. Рестарт контейнера при перезапуске хоста
Раньше мы писали скрипты для хоста, чтобы рестартовать контейнеры вручную.
И однажды снизошло чудо.
docker run --restart=always redis
docker run --restart=on-failure:5 redis
16. Поддержка IPv6
С версии Docker 1.5 можно указать во флаге —ipv6 адрес
IPv6
A еще сегодня мы запустили IPv6 для всех клиентов InfoboxCloud
и VPS от Infobox в Санкт-Петербурге!
17. Новое в Docker 1.9
Persistent Storage!
$ docker volume create -d flocker --name=myvolume
$ docker run -v myvolume:/data busybox sh -c "echo hello > /data/file.txt"
$ docker run -v myvolume:/data busybox sh -c "cat /data/file.txt"
Multi–host networking (через consul), пока настраивается грабельно
Позволяет строить приватные сети между физическими и
виртуальными хостами
ALM не влияет на возможность соединения
Не обязательно создавать контейнер до указания соединения (в
отличие от линковки)
$ docker network create frontend
$ docker run -itd --net=frontend --name web nginx
$ docker network create app
$ docker run -itd --name myapp --net=app <my application container>
$ docker network connect app web
Сети можно создавать отдельно от контейнеров
19. Docker Swarm – кластер из докеров
Провижнинг через docker-machine
Развертывание и масштабирование через Docker Compose
20. UI для Docker – Rancher и другие
Пока делают жизнь сложнее, а не упрощают ее
21. Как установить и где попробовать?
bash <(curl -s http://repository.sandbox.infoboxcloud.ru/scripts/docker/centos7/install.sh)
http://infoboxcloud.ru
Не помните все команды из доклада? :)
https://infoboxcloud.ru/community
В поиске введите docker
Развертывание докера и тулов на CentOS 7 упрощено до предела
“Разрешить управление ядром ОС” // CentOS 7
22. Q&A: Ваши вопросы?
Юрий Трухин
cloud computing expert | InfoboxCloud
ytrukhin@infobox.ru
(рад на них ответить!)
http://infoboxcloud.ru