首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker +R:为什么“保存”方法无效?

Docker +R:为什么“保存”方法无效?
EN

Stack Overflow用户
提问于 2018-09-26 23:28:46
回答 1查看 49关注 0票数 0

我有一个码头文件:

代码语言:javascript
复制
FROM rocker/verse:latest
RUN apt-get update 
RUN R -e "install.packages('TraMineR', repos = 'http://cran.us.r-project.org')"
RUN R -e "install.packages('ggthemes', repos = 'http://cran.us.r-project.org')"
RUN R -e "install.packages('ggplot2', repos = 'http://cran.us.r-project.org')"
RUN R -e "install.packages('Rcpp'            , repos = 'http://cran.us.r-project.org')"
RUN R -e "install.packages('data.table', repos = 'http://cran.us.r-project.org')"
RUN R -e "install.packages('randomForest', repos = 'http://cran.us.r-project.org')"
RUN R -e "install.packages('pROC'            , repos = 'http://cran.us.r-project.org')"
RUN R -e "install.packages('stringr', repos = 'http://cran.us.r-project.org')"
RUN R -e "install.packages('ggplot2', repos = 'http://cran.us.r-project.org')"
RUN R -e "install.packages('ggthemes', repos = 'http://cran.us.r-project.org')"
RUN R -e "install.packages('TraMineR', repos = 'http://cran.us.r-project.org')"
RUN R -e "install.packages('bipartite', repos = 'http://cran.us.r-project.org')"
RUN R -e "install.packages('tm'            , repos = 'http://cran.us.r-project.org')"
RUN R -e "install.packages('dummies', repos = 'http://cran.us.r-project.org')"
RUN R -e "install.packages('xgboost', repos = 'http://cran.us.r-project.org')"

RUN R -e "install.packages('SnowballC', repos = 'http://cran.us.r-project.org')"

我建造它,运行它,得到一个容器。在这个容器中,我运行一个R文件并尝试保存一个对象:

代码语言:javascript
复制
NdelivIDexcessif<-15 ; 
save(NdelivIDexcessif, file="sauvegardeTest.rda")

这并没有创建任何输出,因为我期望在当前的dir上创建一个"sauvegardeTest.rda“。

我错过了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-27 02:21:00

可能是几个可能的事情之一,前两位(在我看来)是:

  1. 默认情况下,Docker会在容器停止时破坏环境(例如,对文件系统的更改)。这对安全性和代码清洁度等都有好处,但如果在容器完成后必须具有文件级持久性,则必须显式设置它。 没有任何东西,就找不到文件。 根@myhost:/tmp/ltest# ll总计76 drwxr-xr-x2根4096 9月26日19:08 ./ drwxrwxrwt 35根根69632 19:08文件=‘mt.rda’)“R版本3.3.3 ( 2017 -03-06) -”另一艘独木舟“版权(C) 2017-统计计算平台R Foundation : x86_64-pc-linux-gnu (64位)R是免费软件,绝对没有任何保证。欢迎您在某些情况下重新分发。键入'license()‘或’license()‘以获取分发细节。R是一个与许多贡献者协作的项目。输入关于如何在出版物中引用R或R包的更多信息和“引文()”,输入“贡献者()”。在一些演示中输入'demo()‘,为在线帮助输入' help ()’,或者为HTML界面输入'help.start()‘来帮助。键入'q()‘退出R. >保存(mtcar,file=’mt.rda‘>)> root@myhost:/tmp/ltest# ll总计76 drwxr-xr-x2根根4096 9月26日19:08 ./ drwxrwxrwt 35根根69632 9月26日19:08 但是,如果显式设置卷或挂载点(https://docs.docker.com/storage/volumes/#choose-the--v-or---mount-flag),则可以实现持久性。 根@myhost:/tmp/ltest# docker运行\ -v /tmp/ltest:/tmp/rtest/ \-rm -it rocker/tidyverse:3.3.3 \R -e“-e”保存(mtcar,file='/tmp/rtest/mt.rda')“R version 3.3.3 ( 2017 -03-06) --”另一独木舟“版权(C):统计计算平台R Foundation : x86_64-pc-linux-gnu (64位)R是免费软件,并附带绝对无担保。欢迎您在某些情况下重新分发。键入'license()‘或’license()‘以获取分发细节。R是一个与许多贡献者协作的项目。输入关于如何在出版物中引用R或R包的更多信息和“引文()”,输入“贡献者()”。在一些演示中输入'demo()‘,为在线帮助输入' help ()’,或者为HTML界面输入'help.start()‘来帮助。键入'q()‘退出R. >保存(mtcar,file='/tmp/rtest/ mt.rda ') > root@franz:/tmp/ltest# ls -l总计4-rw-r-r-1根根1234 19:04 mt.rda
  2. 如果您已经通过某种机制挂载它,请确保在save命令中或通过预先设置R进程的工作目录来设置路径: docker \ -v /tmp/rtest:/tmp/rtest/ \ -w /tmp/rtest/ -rm -it \ rocker/tidyverse:3.3.3 R -e“-it(mtcar,file='mt.rda')”停靠者运行\ -v /tmp/rtest:/tmp/rtest/ -tmp -ti \ rocker/tidyverse:3.3.3 R -e“save(mtcar,file=‘tmp/rtest/mt.rda’)”

请注意,容器外部和内部的目录位置是唯一的;尽管您可以使它们相同,但不需要这样做。在本例中,容器外部的真正目录是/tmp/ltest/,内部目录的名称是/tmp/rtest/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52527351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档