在 docker (tidyverse) 中挂载 R/RStudio 可访问的本地卷
Posted
技术标签:
【中文标题】在 docker (tidyverse) 中挂载 R/RStudio 可访问的本地卷【英文标题】:Mount local volume accessible to R/RStudio in docker (tidyverse)在 docker (tidyverse) 中挂载 R/RStudio 可访问的本地卷
【发布时间】:2018-07-04 01:52:13
【相关技术】:@tags@
【问题描述】:
关于如何从 docker 容器中处理本地文件夹,有很多不受欢迎的问题,但我找不到与我的完全匹配的问题,所以这里有另一个问题:
如何运行 docker 容器,并挂载本地文件夹,以便容器内的 R/RStudio 可以访问它?
听起来有点像:mounting local home directory in Rstudio docker?,使用类似的方法,我可以启动一个容器并挂载一个卷:
docker run -d -p 8787:8787 -v $HOME/my_folder:/LOOKATMEEE -e ROOT=TRUE rocker/tidyverse:3.4
如果我在容器中运行 bash shell,我可以看到文件夹:
docker exec -it 38b2d6ca427f bash
> ls
bin dev home lib LOOKATMEEE mnt proc run srv tmp var boot etc init lib64 media opt root sbin sys usr
# ^ there is is!
但是,如果我在localhost:8787
连接到 RStudio 服务器,我不会在文件窗格中看到它,也不会在 R 控制台中运行 list.files()
时显示它:
我确定我缺少一些基本的东西,但如果有人能告诉我那是什么...谢谢!
【问题讨论】:
我认为您只需将工作目录设置为您将文件夹复制到的位置,从外观上看就是setwd('..')
啊哈,谢谢!是的,它实际上是作为子目录安装的两个级别 - 所以setwd('../..')
或 list.files(../..
) 会打开它。我正在寻找的是让它显示在默认的工作目录中,但现在很清楚如何做到这一点
您可以将驱动器安装在用户rstudio
(运行RStudio的用户)的主目录中:docker run -d -p 8787:8787 -v $HOME/my_folder:/home/rstudio/LOOKATMEEE -e ROOT=TRUE rocker/tidyverse:3.4
应该可以工作
@alistaire 如果您想将其发布为答案,我会投赞成票。谢谢
@lorenzo -- 是的,我推断的差不多了,谢谢!
【参考方案1】:
在这种情况下,R 和 RStudio 的默认工作目录为 /home/rstudio
,比我告诉 docker 挂载文件夹的 /
低两级。
问题中docker run
命令后,可以去list.files('/')
查看文件夹。
如果您希望您的文件夹像我一样显示在 R 的默认工作目录中,然后像这样修改 docker run
:
docker run -d -p 8787:8787 -v $HOME/my_folder:/home/rstudio/LOOKATMEEE -e ROOT=TRUE rocker/tidyverse:3.4
它应该在那里:
感谢用户alistaire
。
【讨论】:
你能写到那个挂载的文件夹 LOOKATMEEE 还是直接读取?【参考方案2】:这个答案是给后代的:)
这个概念是来自主机的资源与容器的“匹配”: :
命令结构应该是这样的:
docker run -d -e PASSWORD= -p 8787:8787 -v : /home/rstudio/ 摇杆/rstudio
查看说明here
【讨论】:
以上是关于在 docker (tidyverse) 中挂载 R/RStudio 可访问的本地卷的主要内容,如果未能解决你的问题,请参考以下文章