在 docker (tidyverse) 中挂载 R/RStudio 可访问的本地卷

arv*_*000 7 r rstudio-server docker

关于如何从 docker 容器内部寻址本地文件夹,有很多很少有人投票的问题,但我找不到一个与我的完全匹配的问题,所以这里有另一个:

如何运行 docker 容器并挂载本地文件夹,以便 R/RStudio 可以在容器内访问它?

这听起来有点像:在 Rstudio docker 中挂载本地主目录?并使用类似的方法,我可以启动一个容器并安装一个卷:

docker run -d -p 8787:8787 -v $HOME/my_folder:/LOOKATMEEE -e ROOT=TRUE rocker/tidyverse:3.4
Run Code Online (Sandbox Code Playgroud)

如果我在容器中运行 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!
Run Code Online (Sandbox Code Playgroud)

但是,如果我在 连接到 RStudio 服务器localhost:8787,则在文件窗格中看不到它,list.files()在 R 控制台中运行时也看不到它:

在此处输入图片说明

我确定我错过了一些基本的东西,但如果有人能告诉我那是什么......谢谢!

arv*_*000 5

在这种情况下,R 和 RStudio 的默认工作目录为,比我告诉 docker 挂载文件夹/home/rstudio低两级。/

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
Run Code Online (Sandbox Code Playgroud)

那里应该是:

在此输入图像描述

谢谢用户alistaire

  • 您可以写入该安装的文件夹 LOOKATMEEE 还是只是从中读取? (2认同)