Может кто-нибудь, пожалуйста, дайте мне знать, как можно получить доступ к файлам в /home
в контейнере сингулярности?
Я создал образ докера. В этом образе некоторые пакеты собраны и установлены под /home
. Некоторые из них также добавлены в PYTHONPATH
в образе докера. Если я запускаю образ, создается контейнер докеров. В этом контейнере я могу получить доступ ко всем файлам под /home
и использовать модули Python, которые я добавил. Это полностью рабочий образ докера.
Я хотел использовать пакеты и модули Python в системе HPC. Итак, я преобразовал образ докера в образ сингулярности. Затем я использовал команду singularity shell <image_name.sif>
для доступа к оболочке в контейнере. После этого я вижу подсказку ниже.
Singularity> cat /etc/*-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION = "Ubuntu 18.04.6 LTS"
NAME = "Ubuntu"
VERSION = "18.04.6 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME = "Ubuntu 18.04.6 LTS"
VERSION_ID = "18.04"
HOME_URL = "https://www.ubuntu.com/"
SUPPORT_URL = "https://help.ubuntu.com/"
BUG_REPORT_URL = "https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL = "https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
Singularity>
Основной ОС в системе HPC является Red Hat Linux. Поскольку команда /etc/*-release
показывает Ubuntu, кажется, что каталог /etc
находится внутри контейнера. Это выглядит разумно. Однако, когда я набираю ls /home
, я вижу содержимое /home
в операционной системе хоста. Как я могу найти файлы в /home
внутри контейнера?
Если я ввожу какие-либо команды для запуска пакетов, установленных в /home
внутри контейнера, то оболочка сингулярности печатает command not found
. Кроме того, если я запускаю интерпретатор Python, я не могу импортировать какие-либо модули, установленные в контейнере. Хотя версия Python совпадает с версией в контейнере, модули не находятся. PYTHONPATH
включает такие пути, как /home/<a_directory_name>
, но интерпретатор Python не может найти модули. Несмотря на то, что образ докера полностью функционален, соответствующий образ сингулярности совершенно бесполезен.
Как я могу использовать пакеты и модули Python, установленные в /home
, в контейнере сингулярности?
По умолчанию Singularity автоматически монтирует $HOME в контейнер, который будет скрывать все, что было установлено там во время создания образа.
Чтобы пропустить это, используйте флаг --no-home при запуске команды сингулярности. Дополнительные параметры, такие как монтирование дома в другое место, описаны в онлайн-документации и документации по интерфейсу командной строки.