Запуск расчётов в контейнерах Docker и с помощью Docker Compose
В рамках лабораторной работы №3 были реализованы Docker-образы для запуска скриптов из лабораторных работ №1 и №2, а также разработано клиент-серверное приложение с использованием docker-compose.
Цель работы — изолировать окружение для выполнения вычислительных задач, обеспечить воспроизводимость результатов и автоматизировать процесс сборки, запуска и сохранения данных с использованием контейнеризации.
- Docker Engine ≥ 20.10
- Docker Compose ≥ 2.0
- Доступ к репозиториям с кодом лабораторных работ №1 и №2
# Сборка для лабораторной №1
docker build -t lab1_image .
docker run --rm lab1_image
docker run --rm -v "%cd%/results:/app/results" lab1_image
# Сборка для лабораторной №2
docker build -t lab2_image .
docker run --rm lab2_image
docker run --rm -v "%cd%/results:/app/results" lab2_imagedocker-compose up --buildПри запуске:
- Клиент (lab01) и сервер (lab02) запускаются в отдельных контейнерах;
- Выполняются вычисления с разными параметрами (шаг сетки, значение параметра и т.д.);
- Результаты замеров времени сохраняются в локальную папку
./results/.
- Базовый образ:
python:3.11-slim - Установлены зависимости через
pipenv - Создана виртуальная среда
- Скрипты скопированы из репозитория
lab01 - Выполняются замеры времени при различных параметрах
- Базовый образ:
python:3.11-slimс установленнымg++ - Установлены зависимости (
pybind11,numpy,pipenv) - Выполняется сборка C++ расширения внутри контейнера
- Скрипты запускаются аналогично lab01
Файл docker-compose.yml описывает:
- Два сервиса:
clientиserver - Общий volume
./results:/app/resultsдля сохранения результатов на хост - Зависимость запуска:
serverстартует первым
Во время выполнения скрипты генерируют файлы
Каждый файл содержит:
- Значение параметра (например, шаг сетки)
- Время выполнения (в секундах)
- Версию скрипта и окружения