在 Windows 下的 Docker 中安装 R语言

news/2025/2/26 17:54:27

以下是在 Windows 系统的 Docker 中安装 R 语言的详细教程,包括 Docker 的安装、配置以及如何在容器中运行 R 语言的步骤。


步骤 1:安装 Docker

  1. 下载 Docker Desktop
    访问 Docker 官方网站:Docker Desktop: The #1 Containerization Tool for Developers | Docker,下载适用于 Windows 的 Docker Desktop 安装程序。

  2. 安装 Docker Desktop

    • 运行下载的安装程序,按照提示完成安装。
    • 在安装过程中,确保勾选以下选项:
      • Use the WSL 2 based engine(推荐使用 WSL 2 作为后端引擎)。
      • Enable Docker Compose V2
  3. 启动 Docker Desktop
    安装完成后,启动 Docker Desktop。首次启动可能需要几分钟时间来完成初始化。

  4. 验证 Docker 是否安装成功
    打开命令提示符(CMD)或 PowerShell,运行以下命令:

    docker --version

    如果显示 Docker 版本信息,则说明安装成功。


步骤 2:拉取 R 语言的 Docker 镜像

Docker Hub 提供了官方的 R 语言镜像,可以直接拉取。

  1. 查找 R 镜像
    访问 Docker Hub 的 R 镜像页面:https://hub.docker.com/r/rocker/r-ver

  2. 拉取 R 镜像
    在命令提示符或 PowerShell 中运行以下命令:

    docker pull rocker/r-ver:latest

    这将会拉取最新的 R 语言镜像。

也可以

docker pull r-base:latest

r-baserocker/r-ver 都是 Docker 官方提供的 R 语言镜像

  • 如果只需要一个最简单的 R 环境,可以使用 r-base。镜像体积较小,适合快速启动。
  • 如果需要更完整的 R 环境、特定版本的 R 或计划扩展为更复杂的开发环境(如 RStudio),推荐使用 rocker/r-ver。镜像体积较大,因为包含更多的工具和依赖

因此,在我的教程中使用了 rocker/r-ver,因为它更适合搭建完整的 R 开发环境。如果你只需要简单的 R 环境运行脚本,完全可以使用 r-base


步骤 3:运行 R 语言的 Docker 容器

  1. 启动 R 容器
    运行以下命令以启动一个 R 容器:

    docker run -it --rm rocker/r-ver:latest
    • -it:以交互模式运行容器。
    • --rm:容器停止后自动删除。
    • rocker/r-ver:latest:使用的镜像名称。
  2. 验证 R 是否运行
    进入容器后,您会看到 R 的交互式命令行界面。输入以下命令验证 R 是否正常运行:

    sessionInfo()

    这将显示 R 的版本信息和其他环境配置。


步骤 4:挂载本地目录并运行 R 脚本

为了方便在容器中访问 Windows 上的文件,可以将本地目录挂载到容器中。

  1. 创建 R 脚本文件
    在 Windows 上创建一个 R 脚本文件,例如 script.R,内容如下:

    print("Hello, Docker with R!")
  2. 挂载目录并运行脚本
    运行以下命令,将本地目录挂载到容器中并执行脚本:

    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 构建自定义镜像
  1. 在容器中安装包
    进入容器后,可以使用以下命令安装包:

    install.packages("ggplot2")
  2. 通过 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 包的安装目录挂载到宿主机的数据卷中,从而实现持久化。

  1. 创建数据卷:
    docker volume create r-packages
  2. 启动容器时挂载数据卷:
    docker run -it --rm -v r-packages:/usr/local/lib/R/site-library rocker/r-ver:latest R
  3. 在容器中安装的 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 镜像。

  1. 启动容器并挂载数据卷:
    docker run -d -p 8787:8787 -v rstudio-config:/home/rstudio rocker/rstudio:latest
  2. 访问 http://localhost:8787,使用用户名 rstudio 和密码 rstudio 登录。
  3. 在 RStudio 中安装的包和用户数据会保存到 rstudio-config 数据卷中。

        优点:适合使用 RStudio 的场景,配置持久化方便。
        缺点:需要启动完整的 RStudio 容器。


http://www.niftyadmin.cn/n/5869019.html

相关文章

2025-02-25 学习记录--C/C++-用C语言实现删除字符串中的子串

用C语言实现删除字符串中的子串 在C语言中&#xff0c;你可以使用strstr函数来查找子串&#xff0c;然后用memmove或strcpy来覆盖或删除找到的子串。 一、举例 &#x1f430; #include <stdio.h> // 包含标准输入输出库&#xff0c;用于使用 printf 函数 #include <s…

CentOS停服后的替代选择:openEuler、Rocky Linux及其他系统的未来展望

CentOS停服后的替代选择&#xff1a;openEuler、Rocky Linux及其他系统的未来展望 引言CentOS停服的背景华为openEuler&#xff1a;面向未来的开源操作系统1. 简介2. 特点3. 发展趋势 Rocky Linux&#xff1a;CentOS的精神继承者1. 简介2. 特点3. 发展趋势 其他可选的替代系统1…

Linux | 进程控制(进程终止与进程等待)

文章目录 Linux | 进程控制 — 进程终止 & 进程等待1、进程终止进程常见退出方法1.1退出码基本概念获取退出码的方式常见退出码约定使用场景 1.2 strerror函数 & errno宏1.3 _exit函数1.4_exit和exit的区别1.4.1 所属头文件与函数原型1.4.2 执行过程差异**结合现象分析…

第八章:虚拟机模块的整合

目录 第一节&#xff1a;代码实现 1-1.前置代码 1-2.成员变量 1-3.构造函数 1-4.交换机接口 1-5.队列接口 1-6.绑定接口 1-7.消息接口 1-8.其他功能接口 第二节&#xff1a;单元测试 下期预告&#xff1a; 虚拟机模块在mqserver目录下实现。 第一节&#xff1a;代码实现 虚…

解决IDEA使用Ctrl + / 注释不规范问题

问题描述&#xff1a; ctrl/ 时&#xff0c;注释缩进和代码规范不一致问题 解决方式 设置->编辑器->代码样式->java->代码生成->注释代码

Android NFC功能开发指南

在 Android 平台上开发 NFC&#xff08;近场通信&#xff09;功能&#xff0c;主要涉及以下几个步骤&#xff1a; 1. 权限声明 首先&#xff0c;在 AndroidManifest.xml 文件中声明 NFC 权限&#xff1a; <uses-permission android:name"android.permission.NFC&quo…

数据分析七大步骤

在工作中&#xff0c;我们可能都遭遇过面对一堆数据&#xff0c;费尽心思进行分析&#xff0c;结果却惨不忍睹&#xff0c;仿佛“一顿操作猛如虎&#xff0c;一看结果0:5”。更糟糕的是&#xff0c;有时我们甚至完全找不到数据分析的头绪。 别急&#xff0c;朋友们&#xff01…

Docker小游戏 | 使用Docker部署star-battle太空飞船射击小游戏

Docker小游戏 | 使用Docker部署star-battle太空飞船射击小游戏 前言项目介绍项目简介项目预览二、系统要求环境要求环境检查Docker版本检查检查操作系统版本三、部署star-battle网页小游戏下载镜像创建容器检查容器状态检查服务端口安全设置四、访问star-battle网页小游戏五、总…