以下是在 Windows 系统的 Docker 中安装 R 语言的详细教程,包括 Docker 的安装、配置以及如何在容器中运行 R 语言的步骤。
步骤 1:安装 Docker
-
下载 Docker Desktop
访问 Docker 官方网站:Docker Desktop: The #1 Containerization Tool for Developers | Docker,下载适用于 Windows 的 Docker Desktop 安装程序。
-
安装 Docker Desktop
- 运行下载的安装程序,按照提示完成安装。
- 在安装过程中,确保勾选以下选项:
- Use the WSL 2 based engine(推荐使用 WSL 2 作为后端引擎)。
- Enable Docker Compose V2。
-
启动 Docker Desktop
安装完成后,启动 Docker Desktop。首次启动可能需要几分钟时间来完成初始化。
-
验证 Docker 是否安装成功
打开命令提示符(CMD)或 PowerShell,运行以下命令:
docker --version
如果显示 Docker 版本信息,则说明安装成功。
步骤 2:拉取 R 语言的 Docker 镜像
Docker Hub 提供了官方的 R 语言镜像,可以直接拉取。
-
查找 R 镜像
访问 Docker Hub 的 R 镜像页面:https://hub.docker.com/r/rocker/r-ver
-
拉取 R 镜像
在命令提示符或 PowerShell 中运行以下命令:
docker pull rocker/r-ver:latest
这将会拉取最新的 R 语言镜像。
也可以
docker pull r-base:latest
r-base
和 rocker/r-ver
都是 Docker 官方提供的 R 语言镜像
- 如果只需要一个最简单的 R 环境,可以使用
r-base
。镜像体积较小,适合快速启动。 - 如果需要更完整的 R 环境、特定版本的 R 或计划扩展为更复杂的开发环境(如 RStudio),推荐使用
rocker/r-ver
。镜像体积较大,因为包含更多的工具和依赖
因此,在我的教程中使用了 rocker/r-ver
,因为它更适合搭建完整的 R 开发环境。如果你只需要简单的 R 环境运行脚本,完全可以使用 r-base
步骤 3:运行 R 语言的 Docker 容器
-
启动 R 容器
运行以下命令以启动一个 R 容器:
docker run -it --rm rocker/r-ver:latest
-it
:以交互模式运行容器。--rm
:容器停止后自动删除。rocker/r-ver:latest
:使用的镜像名称。
-
验证 R 是否运行
进入容器后,您会看到 R 的交互式命令行界面。输入以下命令验证 R 是否正常运行:
sessionInfo()
这将显示 R 的版本信息和其他环境配置。
步骤 4:挂载本地目录并运行 R 脚本
为了方便在容器中访问 Windows 上的文件,可以将本地目录挂载到容器中。
-
创建 R 脚本文件
在 Windows 上创建一个 R 脚本文件,例如
script.R
,内容如下:print("Hello, Docker with R!")
-
挂载目录并运行脚本
运行以下命令,将本地目录挂载到容器中并执行脚本:
docker run -it --rm -v C:\path\to\your\scripts:/workspace rocker/r-ver:latest Rscript /workspace/script.R
-v C:\path\to\your\scripts:/workspace
:将本地目录挂载到容器的/workspace
目录。Rscript /workspace/script.R
:在容器中运行指定的 R 脚本。
步骤 5:安装额外的 R 包(持久化)
如果需要在容器中安装额外的 R 包,可以在 R 交互式命令行中安装,或者通过 Dockerfile 自定义镜像。
方法 1:使用 Dockerfile 构建自定义镜像
-
在容器中安装包
进入容器后,可以使用以下命令安装包:
install.packages("ggplot2")
-
通过 Dockerfile 自定义镜像
创建一个
Dockerfile
文件,内容如下:FROM rocker/r-ver:latest RUN install.packages("ggplot2")
构建自定义镜像:
docker build -t my-r-image .
使用自定义镜像运行容器:
docker run -it --rm my-r-image
优点 :可重复性强,适合团队协作。
缺点:每次修改需要重新构建镜像。
方法 2:使用数据卷(Volume)持久化 R 包
Rocker 镜像支持将 R 包的安装目录挂载到宿主机的数据卷中,从而实现持久化。
-
创建数据卷:
docker volume create r-packages
-
启动容器时挂载数据卷:
docker run -it --rm -v r-packages:/usr/local/lib/R/site-library rocker/r-ver:latest R
-
在容器中安装的 R 包会保存到
r-packages
数据卷中。下次启动容器时,挂载相同的数据卷即可:docker run -it --rm -v r-packages:/usr/local/lib/R/site-library rocker/r-ver:latest R
优点 :无需修改镜像,灵活高效。
缺点:需要手动管理数据卷。
方法3:使用 rocker/rstudio
镜像和持久化配置
如果需要使用 RStudio 并持久化用户数据和包,可以使用 rocker/rstudio
镜像。
-
启动容器并挂载数据卷:
docker run -d -p 8787:8787 -v rstudio-config:/home/rstudio rocker/rstudio:latest
-
访问
http://localhost:8787
,使用用户名rstudio
和密码rstudio
登录。 -
在 RStudio 中安装的包和用户数据会保存到
rstudio-config
数据卷中。
优点 :适合使用 RStudio 的场景,配置持久化方便。
缺点:需要启动完整的 RStudio 容器。