Задача выделения объекта на изображении: хаотично-фазовая синхронизация и аси...
Software engineering seminars: Docker
1. Технологии разработки программного обеспечения
(практика)
Мартынов Семён, Хозяинов Иван
Санкт-Петербургского политехнического университета Петра Великого
Института компьютерных наук и технологий
Кафедра компьютерных систем и программных технологий
12 октября 2017 г.
Мартынов Семён, Хозяинов Иван ТРПО (практика) 12 октября 2017 г. 1 / 27
4. Практическая направленность
"Кому из айтишников на Руси жить хорошо (а кому будет еще лучше)"
(3 октября 2017, https://habrahabr.ru/company/agima/blog/339216/)
120 просмотров
15 приглашений на интервью
6 офферов со средней ЗП 80 т.р. (Москва)
Устроиться на работу легко, а дальше нужно показать себя =)
Мартынов Семён, Хозяинов Иван ТРПО (практика) 12 октября 2017 г. 4 / 27
5. План
Предварительный список тем для практики:
1 Docker
2 Системы контроля версий (git, git-flow)
3 Системы сборки проектов (Gradle, Maven)
4 Системы управления задачами (Redmine, Jira)
5 Системы для непрерывной интеграции (Jenkins, Bamboo, Travian)
6 Управление артефактами/управление документацией
Мартынов Семён, Хозяинов Иван ТРПО (практика) 12 октября 2017 г. 5 / 27
6. Формат работы
1 Интерактив, обсуждения на семинарах
2 Тесты для самостоятельного определения уровня понимания
3 Не большие практические задачи дома
Мартынов Семён, Хозяинов Иван ТРПО (практика) 12 октября 2017 г. 6 / 27
7. Что такое Docker?
Docker – система контейнерной виртуализации
Мартынов Семён, Хозяинов Иван ТРПО (практика) 12 октября 2017 г. 7 / 27
8. Что такое Moby?
Docker – эталонная реализация системы контейнерной виртуализации
Мартынов Семён, Хозяинов Иван ТРПО (практика) 12 октября 2017 г. 8 / 27
9. Грузоперевозки ДО контейнеризации
Необходимо продумать тару под каждый груз и порядок размещения
(задача о рюкзаке?)
Мартынов Семён, Хозяинов Иван ТРПО (практика) 12 октября 2017 г. 9 / 27
12. Применение Docker в компаниях
Мартынов Семён, Хозяинов Иван ТРПО (практика) 12 октября 2017 г. 12 / 27
13. Виртуальные машины простив контейнеров
Контейнеры разделяют ядро операционной системы и, когда нужно,
некоторые слои с файлами (библиотеками).
Мартынов Семён, Хозяинов Иван ТРПО (практика) 12 октября 2017 г. 13 / 27
14. Работа контейнеров в Linux (LXC)
Namespaces – изоляция.
Cgroups – лимит ресурсов.
Мартынов Семён, Хозяинов Иван ТРПО (практика) 12 октября 2017 г. 14 / 27
15. От контейнеров к Docker
Namespaces + Cgroups + Docker Images = Docker Containers
docker run == lxc-start
Мартынов Семён, Хозяинов Иван ТРПО (практика) 12 октября 2017 г. 15 / 27
16. Файловая система (Docker Images)
Слои не изменяемы, но могут накладываться друг на друга.
Мартынов Семён, Хозяинов Иван ТРПО (практика) 12 октября 2017 г. 16 / 27
17. Особенности работы с Docker
Каждый сервис работает на своём "сервере"
Простота обновления
Лёгкая миграция сервисов
Оптимальная нагрузка на железо
Единое окружение (Prod/QA/Dev)
Изолированные сети
Автоматизация сборки
Растущее сообщество
Но...
Проблема роста и ограниченная обратная совместимость
Мартынов Семён, Хозяинов Иван ТРПО (практика) 12 октября 2017 г. 17 / 27
19. Установка Docker на CentOS
Всё ОЧЕНЬ просто:
sudo yum install -y yum-utils
sudo yum-config-manager –add-repo
https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce
sudo systemctl start docker
sudo docker run hello-world
Подробнее:
https://docs.docker.com/engine/installation/linux/docker-ce/centos/
Мартынов Семён, Хозяинов Иван ТРПО (практика) 12 октября 2017 г. 19 / 27
20. Dockerfile
Example (Dockerfile)
FROM ubuntu
RUN apt-get update
RUN apt-get install -y git-core
RUN git clone https://github.com/user/superapp.git
CMD python superapp/app.py
docker build -t myapp .
docker run –rm -it –name myapptest myapp
Мартынов Семён, Хозяинов Иван ТРПО (практика) 12 октября 2017 г. 20 / 27
21. Dockerfile
Example (Dockerfile)
FROM ubuntu:14.04
MAINTAINER Semen Martynov <semen.martynov@gmail.com>
RUN apt-get update
RUN apt-get install -y nginx
RUN echo ’Hi, I am in your container’
>/usr/share/nginx/html/index.html
EXPOSE 80
docker build -t webserver .
docker run –rm -it –name webtest -p 80:80 webserver
Мартынов Семён, Хозяинов Иван ТРПО (практика) 12 октября 2017 г. 21 / 27
22. Ubuntu (Аналог Vagrant)
docker run --rm -it --name ubuntutest -v ‘pwd‘:/opt ubuntu
/bin/bash
Мартынов Семён, Хозяинов Иван ТРПО (практика) 12 октября 2017 г. 22 / 27
23. MySQL + PhpMyAdmin
docker run
--detach
--name mariadb
--restart always
--volume "/etc/localtime:/etc/localtime:ro"
--volume "/home/user/db:/var/lib/mysql"
-e MYSQL_ROOT_PASSWORD=W3VZNWvttMHSgtZ55po3h7
mariadb
docker run --rm -ti --name myadmin
--link mariadb:db -p 8080:80 phpmyadmin/phpmyadmin
Мартынов Семён, Хозяинов Иван ТРПО (практика) 12 октября 2017 г. 23 / 27
24. wiki
docker run --name some-mediawiki -p 8081:80 -d mediawiki
Мартынов Семён, Хозяинов Иван ТРПО (практика) 12 октября 2017 г. 24 / 27
25. ctop
docker run --rm -ti
--name=ctop
--volume /var/run/docker.sock:/var/run/docker.sock
--volume "/etc/localtime:/etc/localtime:ro"
quay.io/vektorlab/ctop:latest
Мартынов Семён, Хозяинов Иван ТРПО (практика) 12 октября 2017 г. 25 / 27
26. Тест
ФИО, Группа?
Уровень владения Linux?
Уровень владения Java?
Какие ещё языки программирование можете читать?
Напишите "Hello world"на любимом ЯП
Какие темы бы ещё хотелось рассмотреть?
Мартынов Семён, Хозяинов Иван ТРПО (практика) 12 октября 2017 г. 26 / 27
27. ДЗ: Запустить WordPress в Docker.
Вопросы?
Замечания?
Дополнения?
Мартынов Семён, Хозяинов Иван ТРПО (практика) 12 октября 2017 г. 27 / 27