步骤 1:安装和配置Docker
-
安装Docker Desktop for Windows
-
访问 Docker官网 下载安装程序。
-
安装时启用 WSL 2后端 (推荐)或 Hyper-V(旧版Windows)。
-
启动Docker Desktop并确保服务运行正常(任务栏出现Docker图标)。
-
-
验证Docker安装
打开PowerShell或命令提示符,运行:
docker run hello-world
如果看到欢迎信息,说明安装成功。
步骤 2:拉取R镜像并运行容器
-
选择R镜像
Rocker项目提供了多个预配置的R镜像,推荐:
-
rocker/r-ver
: 基础R环境。 -
rocker/tidyverse
: 包含tidyverse工具链。 -
rocker/rstudio
: 包含RStudio Server(可选,但VS Code可直接连接容器)。
-
-
拉取镜像
运行以下命令拉取镜像(以
rocker/tidyverse
为例):docker pull rocker/tidyverse
-
启动R容器
运行以下命令启动容器,并映射端口、挂载本地目录:
docker run -d --name my_r_container \ -p 8787:8787 \ # 如果使用RStudio Server -v ${PWD}:/home/rstudio/work \ # 挂载当前目录到容器的/work -e PASSWORD=yourpassword \ # RStudio Server的密码 rocker/tidyverse
- 若仅需VS Code连接,可省略端口映射,直接挂载目录即可。
步骤 3:配置VS Code连接容器
-
安装扩展
- 在VS Code中安装 Remote - Containers 扩展(Microsoft官方扩展)。
-
连接到容器
-
点击VS Code左下角远程连接图标,选择 Attach to Running Container。
-
从列表中选择你创建的R容器(如
my_r_container
)。
-
-
在容器内安装VS Code扩展
- 连接到容器后,在扩展市场中安装 R扩展 (如
vscode-R
和R Debugger
)。
- 连接到容器后,在扩展市场中安装 R扩展 (如
步骤 4:配置R环境
-
安装R依赖包
在容器内的终端(VS Code中按``Ctrl+```)运行:
install.packages(c("languageserver", "httpgd", "jsonlite"))
-
languageserver
: 提供代码补全和诊断功能。 -
httpgd
: 支持在VS Code中显示图形。
-
-
配置VS Code的R设置
在容器内的VS Code中,打开设置(
Ctrl+,
),搜索R> Rpath
,将其设置为容器内的R路径(通常为/usr/local/bin/R
)。
步骤 5:使用R in VS Code
-
创建/打开R脚本
在挂载的目录(如
/home/rstudio/work
)中创建.R
文件。 -
运行代码
-
使用快捷键
Ctrl+Enter
执行选中代码。 -
绘图将直接在VS Code的"Plots"面板中显示(需
httpgd
包支持)。
-
-
交互式终端
打开VS Code的终端,输入
R
进入交互式会话。
可选:使用DevContainer自动化配置
-
创建
.devcontainer
目录在项目根目录新建
.devcontainer/devcontainer.json
,内容如下:{ "name": "R Container", "image": "rocker/tidyverse:latest", "extensions": ["REditorSupport.r"], "settings": { "r.rpath.linux": "/usr/local/bin/R" }, "mounts": ["source=${localWorkspaceFolder},target=/home/rstudio/work,type=bind"], "postCreateCommand": "Rscript -e 'install.packages(c(\"languageserver\", \"httpgd\"), repos=\"https://cloud.r-project.org\")'" }
-
重新打开项目
VS Code会提示在容器中重新打开文件夹,自动完成配置。
常见问题解决
-
路径问题
-
Windows路径在容器中映射为
/mnt/c/...
,确保挂载时使用正确路径。 -
在
docker run
中使用绝对路径,如-v C:/myproject:/home/rstudio/work
。
-
-
权限问题
- 如果容器内无法写入挂载目录,尝试在
docker run
中添加-u root
以root用户运行。
- 如果容器内无法写入挂载目录,尝试在
-
图形显示问题
- 确保安装
httpgd
包,并在VS Code设置中启用"r.plot.useHttpgd": true
。
- 确保安装
通过以上步骤,你可以在Windows的VS Code中无缝使用Docker容器内的R环境,享受隔离的开发环境和一致的跨平台体验。