Как собрать / запустить контейнер с доступной для записи файловой системой, используя Singularity 3? - PullRequest
0 голосов
/ 01 января 2019

Я использую 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 на кластере университета следующим образом.

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. *, который имеет доступную для записи файловую систему?Если это невозможно, объясните, почему это будет оценено.

Ответы [ 2 ]

0 голосов
/ 01 августа 2019

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

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

0 голосов
/ 01 января 2019

флаг try --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
...