我正在使用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
最初的问题仍然存在:如何创建一个具有可写文件系统的Singularity3.*容器?如果不可能,请解释原因。
阅读本文,显然有一个解决包安装问题的方法:
在主目录中创建一个.Renviron
文件,并按如下方式设置R_LIBS_USER
:
# User-installed R packages go into their home directory
echo 'R_LIBS_USER=~/R/%p-library/%v' >> ${HOME}/.Renviron
这为我解决了软件包安装问题。
try——容器中的可写标志:
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 创建一个虚拟机/流浪者