扩展Rstudio Docker映像

时间:2018-10-10 09:16:59

标签: r linux docker rstudio

我搜索了很长时间,尝试了许多建议的解决方案,但没有找到解决我问题的最终方案,我希望我可以陈述足够具体的问题,因为我对整个docker世界还不陌生。

好,就这样:

  • docker容器在脱机服务器上运行(基于centOS,我认为不重要)

    • 我们在本地拉docker映像(在Windows机器上也没关系),然后在脱机服务器上上传并启动它们

    • 对于rstudio(rocker)有时会带来不便,因为无法通过install.packages('pkgname')下载新软件包,而必须将tar.gz下载为具有所有依赖项,然后上载并安装;可行

    • 但是某些软件包还需要安装其他软件,那么我们的解决方法将停止工作

    • 在特定情况下,我要安装spacyr pcakage,该软件包可以下载并安装miniconda

    • 在本地有效,并且我的工作流程将被(编辑)

  • docker pull rocker/rstudio

  • docker container run -d -e PASSWORD=... -p 28787:8787 rocker/rstudio

  • docker exec -ti some_name /bin/bash

  • R

  • install.packages('spacyr')

  • library(spacyr)

  • spacy_install()

  • q()

  • exit
  • docker stop some_name
  • docker commit some_name rstudio_spacyr
  • -在这里,我将先在服务器上使用docker save,然后再使用docker load-
  • sudo docker run -d -e PASSWORD=...--rm -p -e ROOT=TRUE 38787:8787 rstudio_spacyr

现在是问题所在:可以通过library(spacyr)加载spacyr,但是以前工作的spacy_install()现在不再显示错误消息:

Finding a python executable with spaCy installed...
Error in set_spacy_python_option(python_executable, virtualenv, condaenv,  : 
  spaCy or language model en is not installed in any of python executables.

但是,如果我进入Rstudio终端并键入sudo ls /root/miniconda/bin,我会看到所有内容。因此,我的提交似乎有效,但是在没有ls: cannot access '/root/miniconda/bin': Permission denied的sudo结果的情况下,我没有root权限作为命令。

奇怪的是,如果我使用sudo R从Rstudio终端启动R,那么一切都会按预期进行。不幸的是,我们需要它在Rstudio中工作,而不仅仅是在R中工作。

我试图做的事情(而且我知道其中一些事情很可怕):

  • 使用chmod更改根文件夹的权限

  • 从Rstudio中运行
  • 运行system("sudo -i")->会导致tty错误消息

  • 从Rstudio运行system('su -')->产生su: must be run from a terminal

现在我真的不知道如何准确地解决这个问题,我将不胜感激。

我怀疑我可能必须在docker commit步骤中更改某些内容?还是应该真正操纵权限和用户?也许我也可以研究miniconda的安装方式,并将其更改为不在root用户中?但是如何?

非常感谢您阅读和评论!

0 个答案:

没有答案