Как построить / запустить контейнер с файловой системой с возможностью записи, используя Singularity 3?

Я использую Singularity 3.0 и пытаюсь получить образ контейнера из DockerHub и запустить его в университетском кластере. Я последовал за этот рецепт, чтобы начать.

singularity pull --name rstudio-3.5.2.sif docker://rocker/rstudio:3.5.2
singularity exec --bind example-project-1/:/home/rstudio/ rstudio-3.5.2.sif rserver --www-port 8787

Процесс контейнера запускается, но когда я пытаюсь подключиться через браузер, я получаю следующий журнал ошибок.

01 Jan 2019 12:07:22 [rsession-pughdr] ERROR system error 30 (Read-only file system) [path=/home/pughdr/.rstudio, target-dir=]; OCCURRED AT: rstudio::core::Error rstudio::core::FilePath::createDirectory(const string&) const /home/ubuntu/rstudio/src/cpp/core/FilePath.cpp:846; LOGGED FROM: rstudio::core::FilePath rstudio::core::system::userSettingsPath(const rstudio::core::FilePath&, const string&) /home/ubuntu/rstudio/src/cpp/core/system/PosixSystem.cpp:486
01 Jan 2019 12:07:22 [rsession-pughdr] ERROR system error 30 (Read-only file system) [path=/home/pughdr/.rstudio, target-dir=]; OCCURRED AT: rstudio::core::Error rstudio::core::FilePath::createDirectory(const string&) const /home/ubuntu/rstudio/src/cpp/core/FilePath.cpp:846; LOGGED FROM: int main(int, char* const*) /home/ubuntu/rstudio/src/cpp/session/SessionMain.cpp:1689

Кажется, что файловая система в контейнере доступна только для чтения. Как мне построить (или запустить) контейнер, чтобы файловая система контейнера была доступна для записи?

Обновлять:

Мне удалось запустить RStudio Server в университетском кластере следующим образом.

singularity exec --home my-project-directory rstudio-3.5.2.sif rserver --www-port 8787

Кажется, это работает, потому что Singularity автоматически монтирует домашний каталог пользователя на хосте в контейнер, и я переопределил свой домашний каталог на my-project-directory в приведенном выше примере.

Однако я все еще не могу установить пакеты R в контейнер, поскольку файловая система недоступна для записи.

> install.packages(c("plyr", "dply", "tidyr", "ggplot2"))
Installing packages into ‘/usr/local/lib/R/site-library’
(as ‘lib’ is unspecified)
Warning in install.packages :
  'lib = "/usr/local/lib/R/site-library"' is not writable
Would you like to use a personal library instead? (yes/No/cancel) cancel
Error in install.packages : unable to install packages

Первоначальный вопрос все еще остается в силе: как я могу создать контейнер Singularity 3. * с файловой системой с возможностью записи? Если это невозможно, мы будем благодарны за объяснение, почему.

Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
2
0
2 661
3

Ответы 3

попробуйте флаг --writable в вашем контейнере:

singularity build --writable rstudio-3.5.2.sif docker://rocker/rstudio:3.5.2

singularity exec --writable --bind example-project-1/:/home/rstudio/ rstudio-3.5.2.sif rserver --www-port 8787

Флаг --writable устарел в Singularity 3.0 и требует прав sudo (которых у меня нет в университетском кластере) для Singularity 2.5.

davidrpugh 02.01.2019 06:36

Вы можете создать папку с песочницей с параметром --sandbox.

Также вы, вероятно, можете создать виртуальную машину / бродягу для сингулярности 2.5.

Читая этот статья, видимо, есть решение проблемы с установкой пакета:

Создайте файл .Renviron в своем домашнем каталоге и установите R_LIBS_USER следующим образом:

# User-installed R packages go into their home directory
echo 'R_LIBS_USER=~/R/%p-library/%v' >> ${HOME}/.Renviron

Это решило для меня проблему установки пакета.

Другие вопросы по теме