Мы сталкиваемся с проблемой, что многие люди хотят запускать различное научное программное обеспечение на нашем высокопроизводительном вычислительном кластере. Каждому пользователю требуется свой набор библиотек и версий библиотек, и мы не хотим, чтобы администратор каждый раз занимался установкой новой библиотеки.
Поэтому мы думаем об использовании для этой цели контейнеров-докеров: каждый пользователь может настроить свой собственный контейнер с необходимыми ему библиотеками, а затем запускать задания пакетной обработки, используя этот контейнер.
Однако, как мне кажется, докер в основном ориентирован на Сервисы вместо того пакетная обработка заданий: обычно у вас есть (например, веб-служба), которая должна работать все время и обрабатывать новые задания (что в основном всегда одна и та же задача с новыми входными данными), как только они поступают.
Наша ситуация совершенно иная: новый пользователь должен иметь возможность настраивать новые задачи, которые должны выполняться на оборудовании, и должен просто получать определенное количество ресурсов для своего задания пакетной обработки.
Поэтому мне интересно, есть ли уже решение для этого сценария. Я смотрел на https://github.com/NERSC/shifter который, кажется, идет в правильном направлении, но развитие застопорилось.
Мы широко используем докер-контейнеры для временных пакетных заданий. В нашем случае это интенсивная обработка трехмерных изображений, но каждый контейнер обрабатывает «пакет» из тысяч связанных изображений. Мы обнаружили, что этот вариант использования работает очень хорошо, нет причин не использовать для него докер.
Вот несколько вещей, о которых следует подумать при разработке решения:
-rm
флаг, чтобы контейнеры автоматически удалялись по завершении.ProActive от ActiveEon - это пакетный планировщик, изначально разработанный для кластеров HPC. Он включает функцию запуска задач в контейнерах. Эта статья проходит демонстрацию с пакетами R в контейнере Docker.
По вопросам дизайна:
Наконец, дополнительная функция - это возможность работать в облаке (общедоступном или частном), если требуется дополнительная емкость.