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

Mount local volume accessible to R/RStudio in docker (tidyverse)

有很多关于如何从 docker 容器中处理本地文件夹的小问题,但我找不到与我的完全匹配的问题,所以这里有另一个问题:

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

这听起来有点像: 并使用类似的方法,我可以启动一个容器并安装一个卷:

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 服务器,我在文件窗格中看不到它,当 运行 list.files() 在 R控制台:

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

在这种情况下,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

这个答案留给子孙后代:)

这个概念是 "match" 来自主机和容器的资源: :

命令结构应该是这样的:

docker 运行 -d -e 密码= -p 8787:8787 -v : /home/rstudio/ rocker/rstudio

查看说明here