Inicio

Programación en R en VS Code vía Docker

¿Alguna vez intentó compartir su código R con un colega, solo para pasar horas depurando problemas de “pero funciona en mi máquina”? Los contenedores Docker son como contenedores de envío para código: empaquetan su entorno R, bibliotecas y dependencias en una caja sellada que funciona igual en todas partes. Además, tiene acceso a decenas de miles de imágenes preconstruidas en Docker Hub, donde los desarrolladores publican entornos listos para usar, evitando la instalación manual de software. Este tutorial muestra cómo ejecutar R en un entorno aislado y reproducible usando VS Code y Docker Desktop.

Conceptos Clave

Lo Que Necesitará

Paso 1: Instalar Docker Desktop

Paso 2: Instalar la Extensión Dev Containers

Paso 3: Clonar el Proyecto Vibe con GitHub Desktop

Paso 4: Abrir el Proyecto en VS Code

Paso 5: Reabrir en Contenedor

Macs con Apple Silicon: Esta imagen está construida para procesadores Intel/AMD. Docker Desktop la ejecuta mediante emulación, así que la primera construcción y el propio R son más lentos, pero todo funciona.

Nota: El contenedor incluye automáticamente la extensión R y el paquete languageserver. El Dockerfile y devcontainer.json se encargan de esto por usted.

Paso 6: Comprender el Entorno del Contenedor

Ahora está programando dentro de un contenedor Linux. Exploremos qué significa esto.

pwd

Verá /workspaces/vibe - esta es su carpeta de proyecto dentro del contenedor.

ls

Verá los mismos archivos del proyecto: R/, docs/, README.md, etc. (las carpetas que empiezan con un punto, como .devcontainer/, están ocultas; ls -a las muestra)

cd ..
ls

Solo verá vibe/ - el contenedor está aislado. No puede acceder a otras carpetas de su computadora, Escritorio o Documentos. Este aislamiento garantiza que su entorno R sea limpio y reproducible.

cd vibe

Paso 7: Ejecutar Código R Línea por Línea

El contenedor tiene R preinstalado con paquetes comunes. Ejecutemos un script simple de análisis de datos.

Paso 8: Ejecutar la Aplicación

El proyecto incluye una aplicación Shiny de demostración que crea un histograma interactivo.

Paso 9: Hacer un Cambio Simple

Modifiquemos la aplicación para ver cómo funciona el desarrollo.

titlePanel("My First R Docker App"),

Paso 10: Comprender el Dockerfile (Opcional)

# choose a Dockerhub base image with R, Shiny Server, and tidyverse packages
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 (newer npm blocks its setup script unless allowed)
RUN npm config set allow-scripts=@anthropic-ai/claude-code --location=global \
    && npm install -g @anthropic-ai/claude-code

# 5. Give shiny passwordless sudo for updating Claude Code from VS Code
RUN echo 'shiny ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers && \
    rm -rf /var/lib/apt/lists/*

# Expose Shiny server port
EXPOSE 3838

Partes clave:

Otras imágenes Rocker que puede usar:

Después de cambiar la imagen base, reconstruya el contenedor para aplicar los cambios.

Paso 11: Instalar Paquetes R en la Imagen Docker (Opcional)

Los paquetes instalados mediante la consola R (install.packages()) son temporales y desaparecen cuando reconstruye el contenedor. Para hacer los paquetes permanentes, agréguelos al Dockerfile.

library(data.table)

Si se carga sin errores, el paquete está instalado permanentemente.

Próximos Pasos

Solución de Problemas

Resumen del Flujo de Trabajo

Esta configuración proporciona un entorno profesional de desarrollo en R:

Flujo de Trabajo Diario

Una vez que todo esté configurado, aquí está su rutina diaria:

  1. Iniciar Docker Desktop - Abra la aplicación y espere el indicador de estado verde (Docker debe estar en ejecución)
  2. Abrir VS Code - Inicie VS Code y abra su carpeta de proyecto
  3. Reabrir en Contenedor - Si aún no está en el contenedor, haga clic en el icono >< (inferior izquierdo) y seleccione Reopen in Container
  4. Escribir y ejecutar código - Edite archivos .R, ejecute línea por línea con Ctrl+Enter/Cmd+Enter, o ejecute aplicaciones Shiny con el botón ▶ Run Shiny App
  5. Guardar su trabajo - Sus archivos de código (.R, .Rmd) se guardan en su computadora y persisten entre sesiones
  6. Hacer commit y push - Use GitHub Desktop para hacer commit de sus cambios y hacer push al repositorio

¿Qué es Docker Desktop?

Docker Desktop es una aplicación que facilita el uso de Docker en su computadora. Proporciona los servicios en segundo plano que Docker necesita, junto con una ventana visual donde puede ver y administrar sus contenedores, imágenes, almacenamiento y otros recursos de Docker.

Puede pensar en Docker Desktop como el centro de control de sus contenedores. Cuando abre Docker Desktop, se inicia el motor de Docker (Docker engine). El motor de Docker es la parte de Docker que realmente crea y ejecuta los contenedores. Normalmente no necesita interactuar con el motor directamente, porque Docker Desktop lo administra por usted.

¿Qué hace Docker Desktop?

Docker Desktop realiza varias tareas importantes:

Cómo encaja Docker Desktop en este tutorial

Hay tres piezas que trabajan juntas:

  1. Docker Desktop ejecuta el motor de Docker en su computadora.
  2. VS Code le ofrece el editor donde escribe y ejecuta código R.
  3. El Dev Container proporciona un entorno Linux preparado que contiene R, paquetes de R y las herramientas que usa este proyecto.

Cuando elige Reopen in Container, VS Code le pide a Docker Desktop que construya o inicie el contenedor del proyecto. Su computadora sigue ejecutando la aplicación, pero el entorno de R está dentro del contenedor. Esto mantiene la versión de R, los paquetes y las herramientas del sistema separados del resto de su computadora.

Docker Desktop no reemplaza a VS Code, a R ni a su navegador web. Proporciona el entorno que ejecuta el contenedor. VS Code es donde usted trabaja, R es el lenguaje que usa y su navegador es donde ve la aplicación Shiny.

¿Por qué usar Docker Desktop?

Instalar R y todos los paquetes necesarios directamente en su computadora a veces puede causar conflictos de versiones. Un proyecto puede necesitar una versión de un paquete distinta a la de otro proyecto. Docker Desktop ayuda a evitar estos conflictos al darle a cada proyecto su propio entorno controlado.

Por ejemplo, si un compañero de clase usa los mismos archivos del proyecto y la misma configuración de Docker, Docker puede construir un entorno muy parecido al suyo. Así es menos probable que vea un error causado solo por diferencias en las versiones del software. Su código R y los archivos del proyecto permanecen en su computadora, mientras que las herramientas necesarias para ejecutarlos están organizadas dentro del contenedor.

Docker Desktop debe estar abierto y en ejecución antes de construir o reabrir este proyecto en un contenedor. Si Docker Desktop está cerrado, VS Code no puede iniciar el contenedor y es posible que vea un error que indica que Docker no está en ejecución.


Creado por Steven Ge el 7 de diciembre de 2025.