Table of Contents
Что такое Docker?
Это система контейнеризации, которая позволяет создавать образы (Image) - изолированные от хостовой ОС окружения. Из образа впоследствии можно запустить контейнер, в котором могут запускаться различный приложения, установленные в образе. Подробнее изучить технологию лучше всего по ссылке. Docker прост и очень удобен в использовании.
Docker Images для SAPFOR
Стандарт в индустрии - иметь 2 образа
- Образ для разработки (sapfor-builder (скоро появится)) - в него предустановленны все необходимые пакеты для сборки исходного кода SAPFOR и ничего лишнего. Предполагается что репозиторий SAPFOR'a хранится в файловой системе хостовой ОС (например по пути
/path/to/src), тогда исполняя в терминале команду для запуска контейнера из образа
docker run -it -v /path/to/src:/sapfor yatancuyu/sapfor-builder
флаг -v монтирует директорию /path/to/src в хостовой ОС к директории /sapfor внутри контейнера, при этом все изменения совершаемые с файлами внутри контейнера видны и на хостовой ОС, и наоборот. Из чего например следует, что можно выполнять в хостовой ОС git pull и изменения отобразятся и в контейнере. Используя плагин Dev Containers для VSCode можно подключиться к контейнеру, после чего разрабатываться точно также как и на хостовой ОС.
- Образ для развертывания (sapfor beta) - предполагается что в этом образе SAPFOR уже скомпилирован и готов к работе. Также возможно что в будущем в образе будет установлен и DVM (когда автор данного гайда разберется с его компиляцией), а в файловой системе образа можно будет найти задачи из пакета NAS Parallel Benchmarks
Для чего это может быть полезно
- Для разработки - особенно полезно пользователям Mac на M1/2/3, запуская контейнер с флагом
--platform linux/amd64можно разрабатывать SAPFOR прямо как на x86_64, только нужно установить Docker Desktop именно для Apple Silicon. Также может быть полезно для воспроизводимости каких-то ошибок связанных с компиляцией или использованием. Если процесс разработки у вас уже настроен - пользоваться Docker'ом для разработки не имеет необходимости. - Для непосредственного использования - образ для развертывания может быть установлен и запущен одной командой, при этом пользователю не нужно ничего компилировать, он сразу получает доступ ко всему функционалу системы SAPFOR, а затем, возможно, запускать в рамках одного компьютера полученные распараллеленные программы с помощью DVM. Удобно для пользователей, которые только знакомятся с системой, хотят ее попробовать, не тратя время на разбирательство как скомпилировать программу и саму компиляцию.