Я использую 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. * с файловой системой с возможностью записи? Если это невозможно, мы будем благодарны за объяснение, почему.
попробуйте флаг --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
Вы можете создать папку с песочницей с параметром --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
Это решило для меня проблему установки пакета.
Флаг
--writable
устарел в Singularity 3.0 и требует правsudo
(которых у меня нет в университетском кластере) для Singularity 2.5.