Введение 3
1. Анализ средств и выбор технологий контейнеризации 6
1.1. Виртуализация 6
1.2. Контейнерные технологии 7
1.3. Анализ средств контейнеризации 8
1.4. Выбор технологии виртуализации 15
2. Используемые возможности и архитектурные решения 17
2.1. Живая миграция 17
2.2. Версионность 20
2.3. Работа приложения и архитектура 23
3. Хранение и защита образов 26
3.1. Хранение образов 26
3.2. Защита и шифрование образов 27
Заключение 30
Список используемой литературы 31
Сегодня, во времена информационных технологий, в образовании применяются обучающие системы, предназначенные для профессиональной подготовки персонала [1], состоящие из одного или нескольких учебных курсов и набора специализированных локальных тренажеров, позволяющих осуществлять формирование профессиональных навыков и умений. В работе интеллектуальной обучающей системы участвуют отдельные элементы, такие как элемент тестирования, оценки кода, оценки состояния студента, подбора задач и тем, которые взаимодействуют с базой и клиентом. Держать их как монолитную систему, в которой весь функционал - это большой связный модуль, где все компоненты спроектированы так чтобы работать вместе с друг другом, общая память и ресурсы - не выгодно. Во-первых, для решения одной задачи придется разворачивать весь комплекс, что требует больших ресурсов, во-вторых, добавление нового функционала и модификация старого в монопольной системе будут проходить тяжело. В силу этого, функционал, который используется только во время мероприятий, (например, геймифицированное соревнование), будет просто зашит в коде, на его замену также уйдет время. Поэтому было решено разделить систему на микросервисы, каждый из которых было решено хранить в контейнере и вызывать по мере необходимости, а также добавлять новые сервисы. Если же разбить систему на модули, появится некоторые преимущества, например, возможность написания элементов на разных языках, что позволяет использовать преимущества языков, но усложняет как процесс разработки. Однако, вследствие этого решения возникает проблема взаимодействия, хранения и использования сервисных контейнеров в сервис-ориентированной архитектуре интеллектуальных обучающих систем, а также выбор контейнерной технологии и инструментов.
Контейнерные технологии только начали развиваться, однако уже используются многими компаниями с сервис-ориентированной архитектурой
приложений. Есть системы проверки с похожей архитектурой, которые не используют контейнеры, такие как Ejudge [4], но у них есть один значительный минус - это проверка безопасности файла, который рассматривался в работе студента МФТИ [3]. В этой системе мы можем загружать решения либо только в виде исходного кода, либо в виде исполняемого файла с какими-либо ограничениями, чтобы не сломать систему. Каждый файл подвергается проверке. Для контейнера не важно, какой файл исполняется, что значительно расширяет границы типов задач, которые можно проверять, без надобности создавать лишние проверки на безопасность. Мы всегда можем завершить все процессы в тестирующем контейнере и закрыть его в случае, когда процесс контейнера не отвечает. Также мы можем контролировать потребление ресурсов контейнером, но, в отличии от виртуальной машины, он будет использовать только необходимое количество ресурсов, а не какое-то фиксированное. В данной области систем для помощи преподавателям уже существует несколько готовых к использованию решений для автоматической оценки. Есть пример стрессоустойчивой программы основанной на платформе Docker, представленной на 25 международной конференции DAAAM чешской командой разработчиков [13], но, в отличии от создаваемой нами системы, возможности Docker были направлены в основном на обеспечение безопасности при тестировании решений.
В отличии от коллег из Чехии, мы создаём многоагентную систему с участием преподавателя, где интеллектуальные агенты, реализованных в виде сервисов, которые путём обработки данных будут предлагать свои решения. Это означает, что будет не только односторонняя отсылка задач с откликом, но и самостоятельное влияние агентов на жизнь студентов. Также предусмотрен диалог интеллектуальных агентов с преподавателями и студентами. Стоит учитывать, что диалог будет вестись не просто в формате “вопрос-ответ”, интеллектуальные агенты будут самостоятельно предлагать решения, задачи, советы преподавателям и студентам.
Цель работы - разработка системы для взаимодействия виртуальных контейнеров, найти оптимальный способ хранения, защиты образов и данных, а также стабильного использования контейнеров в системе.
Перед нами стоят задачи провести анализ средств контейнеризации, рассмотреть возможности имеющихся технологий, выбрать наиболее подходящие технологии для эффективной работы обучающей системы, проанализировать места хранения образов, средств их защиты и подобрать подходящее. Используя полученные данные, спроектировать и написать прототип приложения, при помощи технологий, наиболее подходящих для работы с контейнерами.
При проведении данной работы, был выбран сервисный подход основанный на контейнерах, было построено взаимодействие между клиентом и сервисами на базе контейнерных технологий. В ходе анализа и исследования средств контейнеризации, и возможностей современных технологий данной области, нами были выбраны следующие: Docker как платформа,
использующий Hiper-V виртуализацию, docker registry на базе собственного хранилища. Спроектирован и реализован прототип приложения для взаимодействия контейнеров и управления ими с целью реализации обучающих программ.
В дальнейшем планируется работа по развитию взаимодействия всех элементов системы. С развитием технологии контейнеризации возможна реализация аналогичного приложения в кросс-платформенном виде, то есть работающее на любой операционной системе.
1. Алещенко А.С., Трембач В.М. Интеллектуальная обучающая система кафедры вуза., 2016
2. Плаксин А.Е. Использование виртуализации и контейнерных технологий в интеллектуальных обучающих системах., KFUITIS, 2016
3. Дербышев Д.Ю. Расширение возможностей проверяющей системы Ejudge по безопасной проверке решений с использованием технологий виртуализации., ВКР. МФТИ, 2015
4. Ejudge // Тестирование под отдельным пользователем., 2017., https://eiudse.ru/wiki/index.php/Main_Pase
5. Zheng C., Thain D. Integrating Containers into Workflows: A Case Study Using Makeflow, Work Queue, and Docker. - 2015.
6. Huber N. et al. Evaluating and Modeling Virtualization Performance Overhead for Cloud Environments //CLOSER. - 2011. - С. 563-573.
7. Rosenblum M., Garfmkel T. Virtual machine monitors: Current technology and future trends //Computer. - 2005. - Т. 38. - №. 5. - С. 39-47.
8. Soltesz S. et al. Container-based operating system virtualization: a scalable, high-performance alternative to hypervisors //ACM SIGOPS Operating Systems Review. - ACM, 2007. - Т. 41. - №. 3. - С. 275-287
9. Rosen R. Resource management: Linux kernel Namespaces and cgroups //Haifux, May. 2013 Available from: http://www. cs.ucsb.edu/~rich/class/cs290- cloud/papers/lxc-namespace.pdf
10. Kovari A., Dukan P. KVM & OpenVZ virtualization basedIaaS open source cloud virtualization platforms: OpenNode, Proxmox VE //Intelligent Systems and Informatics (SISY), 2012 IEEE 10th Jubilee International Symposium on. - IEEE, 2012. - С. 335-339.
11. Dotcloud INC. Docker Documentation. 2017 Available from: https://docs.docker.com/
12. About Cuda. Nvidia Cuda Zone. 2017 Available from: https://developer.nvidia.com/about-cuda
13. Frantisek Spacek, Radomir Sohlich, Tomas Dulik., Docker as Platform for
Assignments Evaluation. Tomas Bata University in Zlin, Faculty of Applied Informatics, Nad Strandmi 4511, 760 05 Zlin, Czech Republic
https://doi. org/10.1016/j.proeng.2015.01.541
14. Docker for Windows. 2016 Available from: https://docs.docker.com/docker-for-windows/
15. Docker for Mac 2017 Available from: https://docs.docker.com/docker-for- mac/
16. Docker Registry. Docker Documentation. 2017 Available from: https://docs.docker.com/resistry/
17. Docker Image Builder 2017 Available from: https://docs.docker.com/engine/reference/builder/
18. Docker Migrate 2017 Available from:
https://docs.docker.com/engine/migration/
19. Xavier M. G. et al. Performance evaluation of container-based virtualization for high performance computing environments //Parallel, Distributed and Network-Based Processing (PDP), 2013 21st Euromicro International Conference on. - IEEE, 2013. - С. 233-240.
20. Linux Containers. 2017 Available from: https://l inuxcontainers. org/