首页

通过 Docker 容器在 VS Code 中进行 R 编程

曾经试图与同事分享 R 代码,却花费大量时间调试”在我机器上能跑”的问题?Docker 容器就像代码的集装箱——将 R 环境、库和依赖打包到密封容器中,在任何地方都能以相同方式运行。此外,Docker Hub 上有数万个预构建镜像,开发者发布的即用环境,免去手动安装软件的麻烦。本教程将教你如何使用 VS Code 和 Docker Desktop 在隔离、可重现的环境中运行 R。

核心概念

准备工作

步骤 1:安装 Docker Desktop

步骤 2:安装 Dev Containers 扩展

步骤 3:使用 GitHub Desktop 克隆 Vibe 项目

步骤 4:在 VS Code 中打开项目

步骤 5:在容器中重新打开

注意:容器自动包含 R 扩展和 languageserver 包。Dockerfile 和 devcontainer.json 会处理这些。

步骤 6:了解容器环境

现在你在 Linux 容器内编写代码。让我们探索一下这意味着什么。

pwd

会看到 /workspaces/vibe - 这是容器内的项目文件夹。

ls

会看到项目中的相同文件:R/.devcontainer/README.md 等。

cd ..
ls

只会看到 vibe/ - 容器是隔离的。你无法访问计算机的其他文件夹、桌面或文档。这种隔离确保 R 环境干净且可重现。

cd vibe

步骤 7:逐行运行 R 代码

容器预装了 R 和常用包。让我们运行一个简单的数据分析脚本。

步骤 8:运行应用程序

项目包含一个演示 Shiny 应用,用于创建交互式直方图。

步骤 9:进行简单更改

让我们修改应用,了解开发流程。

titlePanel("My First R Docker App")

步骤 10:了解 Dockerfile(可选)

# choose a Dockerhub base image
FROM rocker/shiny-verse:latest

# 1. System deps commonly needed by R packages
RUN apt-get update && apt-get install -y \
    libcurl4-openssl-dev libssl-dev libxml2-dev git curl && \
    rm -rf /var/lib/apt/lists/*

# 2. R packages for VS Code integration: language server + debugger
RUN R -q -e 'install.packages(c("rstudioapi", "languageserver"), repos="https://cloud.r-project.org")'

# 3. Install Node.js LTS from NodeSource
RUN curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - \
    && apt-get install -y nodejs \
    && npm install -g npm@latest

# 4. Install Claude Code globally
RUN npm install -g @anthropic-ai/claude-code

# 5. Expose Shiny server port
EXPOSE 3838

关键部分:

可用的其他 Rocker 镜像:

更改基础镜像后,重新构建容器以应用更改。

步骤 11:在 Docker 镜像中安装 R 包(可选)

通过 R 控制台(install.packages())安装的包是临时的,重新构建容器时会消失。要使包永久存在,将它们添加到 Dockerfile 中。

library(data.table)

如果加载无错误,则包已永久安装。

下一步

故障排除

工作流程概述

此设置提供专业的 R 开发环境:

日常工作流程

一旦设置完成,这是日常例程:

  1. 启动 Docker Desktop - 打开应用并等待绿色状态指示器(Docker 必须运行)
  2. 打开 VS Code - 启动 VS Code 并打开项目文件夹
  3. 在容器中重新打开 - 如果尚未在容器中,点击绿色图标(左下角)并选择 Reopen in Container
  4. 编写和运行代码 - 编辑 .R 文件,用 Ctrl+Enter/Cmd+Enter 逐行运行,或用 ▶ Run Shiny App 按钮运行 Shiny 应用
  5. 保存工作 - 代码文件(.R.Rmd)保存到计算机,在会话之间持久存在
  6. 提交和推送 - 使用 GitHub Desktop 提交更改并推送到仓库

Steven Ge 创建于 2025 年 12 月 7 日。