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
- Docker Desktop - Aplicación que ejecuta contenedores en su computadora, gestionando entornos aislados
- Dev Container - Función de VS Code que le permite programar dentro de un contenedor Docker con soporte completo del IDE
- Aislamiento del contenedor - Su código se ejecuta en un entorno Linux separado que solo ve su carpeta de proyecto, no toda su computadora
- Rocker - Imágenes Docker preconstruidas diseñadas específicamente para desarrollo en R
Lo Que Necesitará
- Haber completado Ejecutar R en VS Code
- Haber completado Introducción al Control de Versiones
- 20-25 minutos
Paso 1: Instalar Docker Desktop
- Visite la página de descarga de Docker Desktop
- Haga clic en Download for Windows (o Mac/Linux según su sistema)
- Ejecute el instalador y siga el asistente de instalación
- Cuando se le solicite, habilite WSL 2 (usuarios de Windows) o acepte la configuración predeterminada
- Después de la instalación, inicie Docker Desktop
- Espere a que el motor de Docker se inicie (verá un indicador de estado verde en la parte inferior izquierda)
Paso 2: Instalar la Extensión Dev Containers
- Abra VS Code
- Haga clic en el icono de Extensions en la barra lateral izquierda (o haga clic en View > Extensions)
- Escriba
dev containersen el cuadro de búsqueda - Encuentre Dev Containers de Microsoft
- Haga clic en Install
Paso 3: Clonar el Proyecto Vibe con GitHub Desktop
- Abra GitHub Desktop
- Haga clic en File > Clone repository
- Haga clic en la pestaña URL
- En el campo Repository URL, pegue:
https://github.com/gexijin/vibe - Elija dónde guardar el proyecto (el campo Local Path)
- Haga clic en Clone
- GitHub Desktop descargará el proyecto en la ubicación elegida
Paso 4: Abrir el Proyecto en VS Code
- En VS Code, haga clic en File > Open Folder
- Navegue hasta la carpeta
vibeque acaba de clonar - Haga clic en Select Folder
- Verá los archivos del proyecto en la barra lateral del Explorer
Paso 5: Reabrir en Contenedor
- Busque una notificación en la parte inferior derecha: Folder contains a Dev Container configuration file
- Haga clic en Reopen in Container
- Si no ve la notificación, haga clic en el icono >< en la esquina inferior izquierda
- Seleccione Reopen in Container del menú
- VS Code construirá el contenedor (esto toma 5-10 minutos la primera vez)
- Verá una notificación de progreso mostrando los pasos de construcción
- Cuando se complete, el icono >< en la esquina inferior izquierda mostrará Dev Container: R in Docker (AMD64)
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.
- Haga clic en Terminal > New Terminal para abrir una terminal dentro del contenedor
- Verifique su ubicación actual:
pwd
Verá /workspaces/vibe - esta es su carpeta de proyecto dentro del contenedor.
- Liste los archivos:
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)
- Intente subir un directorio:
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.
- Regrese a la carpeta del proyecto:
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.
- En VS Code Explorer, navegue hasta
R/iris_analysis.R - Haga clic para abrir el archivo
- Verá código R que analiza el conjunto de datos iris
- Haga clic en View > Command Palette, escriba
R: Create R Terminaly presione Enter. Se abre una terminal R en la parte inferior con un prompt>(este contenedor envía su código a la terminal que esté usando, así que mantenga seleccionada esta terminal R) - Si VS Code le pide instalar el paquete sess, haga clic en Yes (o Install bundled sess) y espere a que termine. Esto permite que VS Code muestre sus gráficos
- Haga clic de nuevo en
iris_analysis.Ry seleccione la primera línea:data(iris) - Presione
Ctrl+Enter(Windows/Linux) oCmd+Enter(Mac) para ejecutarla - Continúe ejecutando cada línea, una a la vez
- Cuando ejecute
head(iris), verá las primeras 6 filas en la terminal - Cuando ejecute
summary(iris), verá resúmenes estadísticos - Cuando ejecute los comandos
hist(), el histograma aparece en una pestaña de gráficos dentro de VS Code - También puede seleccionar múltiples líneas y ejecutarlas juntas con
Ctrl+EnteroCmd+Enter
Paso 8: Ejecutar la Aplicación
El proyecto incluye una aplicación Shiny de demostración que crea un histograma interactivo.
- En VS Code Explorer, navegue hasta
R/app.R - Haga clic para abrir el archivo
- Verá código para una aplicación web Shiny
- Busque en la parte superior derecha de la ventana del editor un botón ▶
- Haga clic en la flecha desplegable junto a él y seleccione Run Shiny App
- La aplicación se inicia y se abre en una pestaña de vista previa dentro de VS Code
- Para abrirla en su navegador web habitual, haga clic en la pestaña Ports del panel inferior y luego en el icono del globo junto al puerto reenviado
- Mueva el control deslizante para cambiar los intervalos del histograma - el gráfico se actualiza en tiempo real
Paso 9: Hacer un Cambio Simple
Modifiquemos la aplicación para ver cómo funciona el desarrollo.
- Mantenga la aplicación en ejecución
- En VS Code, edite
R/app.R - Encuentre la línea 16:
titlePanel("Old Faithful Geyser Data"), - Cambie solo el texto entre comillas y mantenga la coma al final de la línea:
titlePanel("My First R Docker App"),
- Guarde el archivo (File > Save)
- La extensión Shiny recargará automáticamente la aplicación
- Si la vista previa no se actualiza sola, haga clic en la flecha de recarga en la parte superior de la pestaña de vista previa (o actualice su navegador)
- El título ahora muestra su texto personalizado
Paso 10: Comprender el Dockerfile (Opcional)
- En VS Code Explorer, navegue hasta
.devcontainer/Dockerfile - Haga clic para abrir el archivo
- Verá la configuración completa:
# 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:
FROM rocker/shiny-verse:latest- Imagen base con R, Shiny y tidyverse preinstaladosRUN apt-get install- Bibliotecas del sistema Linux para paquetes RRUN R -q -e 'install.packages(...)'- Instala paquetes R permanentementeRUN curl... && apt-get install -y nodejs- Instala Node.js, necesario para ejecutar Claude CodeRUN npm config set allow-scripts=... && npm install -g @anthropic-ai/claude-code- Instala Claude Code globalmente para asistencia con IA (la primera parte permite que Claude Code termine de configurarse, algo que las versiones más recientes de npm bloquean de otro modo)RUN echo 'shiny ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers- Permite que el usuario del contenedor ejecutesudo claude updatesin pedir contraseñaEXPOSE 3838- Abre el puerto 3838 para aplicaciones Shiny
Otras imágenes Rocker que puede usar:
rocker/r-ver:4.5.3- Solo R (versión específica)rocker/rstudio:latest- R con RStudio Serverrocker/tidyverse:latest- R con paquetes tidyverserocker/shiny-verse:latest- R con Shiny y tidyverse (el que estamos usando)
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.
- En VS Code Explorer, navegue hasta
.devcontainer/Dockerfile - Haga clic para abrir el archivo
- Agregue una nueva línea debajo de otras líneas ‘install.packages’ para instalar el paquete
data.table:RUN R -q -e 'install.packages("data.table", repos="https://cloud.r-project.org")' - Guarde el archivo (File > Save)
- Haga clic en el icono >< en la esquina inferior izquierda
- Seleccione Rebuild Container del menú
- VS Code reconstruirá el contenedor con su nuevo paquete (toma 2-5 minutos)
- Para verificar, abra una terminal R y escriba:
library(data.table)
Si se carga sin errores, el paquete está instalado permanentemente.
Próximos Pasos
- Crear un nuevo script R - Haga un nuevo archivo
.Ren la carpetaR/, escriba código de análisis de datos usando conjuntos de datos integrados comomtcarsoiris - Instalar paquetes R - Agregue los paquetes que necesite editando el Dockerfile y reconstruyendo el contenedor
- Explorar tidyverse - Pruebe la manipulación de datos con
dplyry visualización conggplot2usando conjuntos de datos de ejemplo
Solución de Problemas
- Docker Desktop no está en ejecución - Abra Docker Desktop y espere el indicador de estado verde antes de reabrir el contenedor
- La construcción del contenedor falla - Verifique su conexión a internet; la primera construcción descarga ~2GB. Haga clic en Rebuild Container para reintentar
Resumen del Flujo de Trabajo
Esta configuración proporciona un entorno profesional de desarrollo en R:
- VS Code proporciona el editor de código con resaltado de sintaxis e IntelliSense
- Docker container ejecuta un entorno Linux aislado con R y todas las dependencias
- Rocker image (
rocker/shiny-verse) incluye R, Shiny, tidyverse y herramientas de desarrollo - Dev Container config (
.devcontainer/) instala automáticamente extensiones de VS Code para R y Shiny - Port forwarding permite acceder a la aplicación Shiny que se ejecuta dentro del contenedor desde su navegador
Flujo de Trabajo Diario
Una vez que todo esté configurado, aquí está su rutina diaria:
- Iniciar Docker Desktop - Abra la aplicación y espere el indicador de estado verde (Docker debe estar en ejecución)
- Abrir VS Code - Inicie VS Code y abra su carpeta de proyecto
- Reabrir en Contenedor - Si aún no está en el contenedor, haga clic en el icono >< (inferior izquierdo) y seleccione Reopen in Container
- Escribir y ejecutar código - Edite archivos
.R, ejecute línea por línea conCtrl+Enter/Cmd+Enter, o ejecute aplicaciones Shiny con el botón ▶ Run Shiny App - Guardar su trabajo - Sus archivos de código (
.R,.Rmd) se guardan en su computadora y persisten entre sesiones - 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:
- Ejecuta el motor de Docker - El motor crea y ejecuta los contenedores que contienen su software.
- Descarga imágenes - Una imagen es un paquete inicial ya preparado, como un sistema Linux con R y paquetes de R comunes. En este tutorial, el proyecto usa una imagen del proyecto Rocker.
- Construye contenedores - Docker usa el Dockerfile y la configuración de Dev Container de este proyecto para crear un contenedor preparado para programar en R.
- Inicia y detiene contenedores - Puede abrir, pausar, reiniciar o detener el contenedor cuando lo necesite.
- Conecta los contenedores con sus archivos - La carpeta de su proyecto está disponible dentro del contenedor, así que puede editar archivos en VS Code mientras el código se ejecuta en el contenedor.
- Conecta los contenedores con su navegador - Cuando la aplicación Shiny se ejecuta dentro del contenedor, Docker Desktop y VS Code trabajan juntos para que esa aplicación esté disponible en su navegador web.
Cómo encaja Docker Desktop en este tutorial
Hay tres piezas que trabajan juntas:
- Docker Desktop ejecuta el motor de Docker en su computadora.
- VS Code le ofrece el editor donde escribe y ejecuta código R.
- 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.