R-Programmierung in VS Code über Docker-Container
Haben Sie schon einmal versucht, Ihren R-Code mit einem Kollegen zu teilen, nur um dann Stunden mit dem Debuggen von „aber es funktioniert auf meinem Rechner“-Problemen zu verbringen? Docker-Container sind wie Frachtcontainer für Code – sie verpacken Ihre R-Umgebung, Bibliotheken und Abhängigkeiten in eine versiegelte Box, die überall gleich funktioniert. Außerdem erhalten Sie Zugang zu Zehntausenden von vorgefertigten Images auf Docker Hub, wo Softwareentwickler fertige Umgebungen veröffentlichen und Ihnen den Schmerz manueller Softwareinstallation ersparen. Dieses Tutorial zeigt Ihnen, wie Sie R in einer isolierten, reproduzierbaren Umgebung mit VS Code und Docker Desktop ausführen.
Wichtige Konzepte
- Docker Desktop - Anwendung, die Container auf Ihrem Computer ausführt und isolierte Umgebungen verwaltet
- Dev Container - VS Code-Funktion, die es Ihnen ermöglicht, innerhalb eines Docker-Containers mit voller IDE-Unterstützung zu programmieren
- Container-Isolation - Ihr Code läuft in einer separaten Linux-Umgebung, die nur Ihren Projektordner sieht, nicht Ihren gesamten Computer
- Rocker - Vorgefertigte Docker-Images, die speziell für R-Entwicklung entwickelt wurden
Was Sie benötigen
- Abgeschlossenes Tutorial R in VS Code ausführen
- Abgeschlossenes Tutorial Erste Schritte mit Versionskontrolle
- 20-25 Minuten
Schritt 1: Docker Desktop installieren
- Besuchen Sie die Docker Desktop Download-Seite
- Klicken Sie auf Download for Windows (oder Mac/Linux je nach System)
- Führen Sie das Installationsprogramm aus und folgen Sie dem Assistenten
- Wenn Sie dazu aufgefordert werden, aktivieren Sie WSL 2 (Windows-Benutzer) oder akzeptieren Sie die Standardeinstellungen
- Starten Sie Docker Desktop nach der Installation
- Warten Sie, bis die Docker-Engine gestartet ist (Sie sehen einen grünen Statusanzeiger unten links)
Schritt 2: Dev Containers-Erweiterung installieren
- Öffnen Sie VS Code
- Klicken Sie auf das Extensions-Symbol in der linken Seitenleiste (oder klicken Sie auf View > Extensions)
- Geben Sie
dev containersin das Suchfeld ein - Finden Sie Dev Containers von Microsoft
- Klicken Sie auf Install
Schritt 3: Das Vibe-Projekt mit GitHub Desktop klonen
- Öffnen Sie GitHub Desktop
- Klicken Sie auf File > Clone repository
- Klicken Sie auf den URL-Tab
- Fügen Sie im Feld Repository URL ein:
https://github.com/gexijin/vibe - Wählen Sie, wo das Projekt gespeichert werden soll (das Feld Local Path)
- Klicken Sie auf Clone
- GitHub Desktop lädt das Projekt an Ihren gewählten Ort herunter
Schritt 4: Projekt in VS Code öffnen
- Klicken Sie in VS Code auf File > Open Folder
- Navigieren Sie zum Ordner
vibe, den Sie gerade geklont haben - Klicken Sie auf Ordner auswählen (englisch: Select Folder)
- Sie sehen die Projektdateien in der Explorer-Seitenleiste
Schritt 5: Im Container erneut öffnen
- Suchen Sie nach einer Benachrichtigung unten rechts: Folder contains a Dev Container configuration file
- Klicken Sie auf Reopen in Container
- Wenn Sie die Benachrichtigung nicht sehen, klicken Sie auf das ><-Symbol in der unteren linken Ecke
- Wählen Sie Reopen in Container aus dem Menü
- VS Code baut den Container (dies dauert beim ersten Mal 5-10 Minuten)
- Sie sehen eine Fortschrittsanzeige mit den Build-Schritten
- Nach Abschluss zeigt das ><-Symbol in der unteren linken Ecke Dev Container: R in Docker (AMD64) an
Apple-Silicon-Macs: Dieses Image ist für Intel/AMD-Prozessoren gebaut. Docker Desktop führt es per Emulation aus. Daher sind der erste Build und R selbst langsamer, aber alles funktioniert.
Hinweis: Der Container enthält automatisch die R-Erweiterung und das languageserver-Paket. Das Dockerfile und die devcontainer.json erledigen das für Sie.
Schritt 6: Die Container-Umgebung verstehen
Jetzt programmieren Sie innerhalb eines Linux-Containers. Lassen Sie uns erkunden, was das bedeutet.
- Klicken Sie auf Terminal > New Terminal, um ein Terminal innerhalb des Containers zu öffnen
- Überprüfen Sie Ihren aktuellen Standort:
pwd
Sie sehen /workspaces/vibe – das ist Ihr Projektordner innerhalb des Containers.
- Listen Sie die Dateien auf:
ls
Sie sehen dieselben Dateien aus dem Projekt: R/, docs/, README.md usw. (Ordner, deren Name mit einem Punkt beginnt, wie .devcontainer/, sind ausgeblendet; ls -a zeigt sie an)
- Versuchen Sie, ein Verzeichnis nach oben zu gehen:
cd ..
ls
Sie sehen nur vibe/ – der Container ist isoliert. Sie können nicht auf die anderen Ordner, den Desktop oder die Dokumente Ihres Computers zugreifen. Diese Isolation stellt sicher, dass Ihre R-Umgebung sauber und reproduzierbar ist.
- Kehren Sie zum Projektordner zurück:
cd vibe
Schritt 7: R-Code Zeile für Zeile ausführen
Der Container hat R mit gängigen Paketen vorinstalliert. Führen wir ein einfaches Datenanalyse-Skript aus.
- Navigieren Sie im VS Code Explorer zu
R/iris_analysis.R - Klicken Sie darauf, um die Datei zu öffnen
- Sie sehen R-Code, der den Iris-Datensatz analysiert
- Klicken Sie auf View > Command Palette, geben Sie
R: Create R Terminalein und drücken Sie Enter. Unten öffnet sich ein R-Terminal mit dem R-Prompt>(dieser Container sendet Ihren Code an das gerade verwendete Terminal, lassen Sie dieses R-Terminal also ausgewählt) - Wenn VS Code anbietet, das Paket sess zu installieren, klicken Sie auf Yes (oder Install bundled sess) und warten Sie, bis die Installation abgeschlossen ist. Damit kann VS Code Ihre Plots anzeigen
- Klicken Sie wieder in
iris_analysis.Rund wählen Sie die erste Zeile aus:data(iris) - Drücken Sie
Strg+Enter(Windows/Linux) oderCmd+Enter(Mac), um sie auszuführen - Fahren Sie fort, jede Zeile einzeln auszuführen
- Wenn Sie
head(iris)ausführen, sehen Sie die ersten 6 Zeilen im Terminal - Wenn Sie
summary(iris)ausführen, sehen Sie statistische Zusammenfassungen - Wenn Sie die
hist()-Befehle ausführen, erscheint das Histogramm in einem Plot-Tab innerhalb von VS Code - Sie können auch mehrere Zeilen auswählen und sie zusammen mit
Strg+EnteroderCmd+Enterausführen
Schritt 8: Die App ausführen
Das Projekt enthält eine Demo-Shiny-App, die ein interaktives Histogramm erstellt.
- Navigieren Sie im VS Code Explorer zu
R/app.R - Klicken Sie darauf, um die Datei zu öffnen
- Sie sehen Code für eine Shiny-Webanwendung
- Schauen Sie oben rechts im Editor-Fenster nach einer ▶-Schaltfläche
- Klicken Sie auf den Dropdown-Pfeil daneben und wählen Sie Run Shiny App
- Die App startet und öffnet sich in einem Vorschau-Tab innerhalb von VS Code
- Um sie stattdessen in Ihrem normalen Webbrowser zu öffnen, klicken Sie im unteren Bereich auf den Tab Ports und dann auf das Globus-Symbol neben dem weitergeleiteten Port
- Bewegen Sie den Schieberegler, um die Histogramm-Bins zu ändern – das Diagramm aktualisiert sich in Echtzeit
Schritt 9: Eine einfache Änderung vornehmen
Lassen Sie uns die App modifizieren, um zu sehen, wie Entwicklung funktioniert.
- Lassen Sie die App laufen
- Bearbeiten Sie in VS Code
R/app.R - Finden Sie Zeile 16:
titlePanel("Old Faithful Geyser Data"), - Ändern Sie nur den Text in den Anführungszeichen und lassen Sie das Komma am Zeilenende stehen:
titlePanel("My First R Docker App"),
- Speichern Sie die Datei (File > Save)
- Die Shiny-Erweiterung lädt die App automatisch neu
- Wenn sich die Vorschau nicht von selbst aktualisiert, klicken Sie oben im Vorschau-Tab auf den Pfeil zum Neuladen (oder aktualisieren Sie Ihren Browser)
- Der Titel zeigt jetzt Ihren benutzerdefinierten Text
Schritt 10: Das Dockerfile verstehen (Optional)
- Navigieren Sie im VS Code Explorer zu
.devcontainer/Dockerfile - Klicken Sie darauf, um die Datei zu öffnen
- Sie sehen die vollständige Konfiguration:
# 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
Wichtige Teile:
FROM rocker/shiny-verse:latest- Basis-Image mit vorinstalliertem R, Shiny und tidyverseRUN apt-get install- Linux-Systembibliotheken für R-PaketeRUN R -q -e 'install.packages(...)'- Installiert R-Pakete permanentRUN curl... && apt-get install -y nodejs- Installiert Node.js, erforderlich für Claude CodeRUN npm config set allow-scripts=... && npm install -g @anthropic-ai/claude-code- Installiert Claude Code global für KI-Unterstützung (der erste Teil lässt Claude Code seine Einrichtung abschließen, die neuere npm-Versionen sonst blockieren)RUN echo 'shiny ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers- Erlaubt dem Benutzer im Container,sudo claude updateohne Passwortabfrage auszuführenEXPOSE 3838- Öffnet Port 3838 für Shiny-Apps
Andere Rocker-Images, die Sie verwenden können:
rocker/r-ver:4.5.3- Nur R (spezifische Version)rocker/rstudio:latest- R mit RStudio Serverrocker/tidyverse:latest- R mit tidyverse-Paketenrocker/shiny-verse:latest- R mit Shiny und tidyverse (das verwenden wir)
Nach Änderung des Basis-Images müssen Sie den Container neu erstellen, um die Änderungen anzuwenden.
Schritt 11: R-Pakete im Docker-Image installieren (Optional)
Über die R-Konsole installierte Pakete (install.packages()) sind temporär und verschwinden, wenn Sie den Container neu erstellen. Um Pakete permanent zu machen, fügen Sie sie dem Dockerfile hinzu.
- Navigieren Sie im VS Code Explorer zu
.devcontainer/Dockerfile - Klicken Sie darauf, um die Datei zu öffnen
- Fügen Sie eine neue Zeile unterhalb der anderen
install.packages-Zeilen hinzu, um dasdata.table-Paket zu installieren:RUN R -q -e 'install.packages("data.table", repos="https://cloud.r-project.org")' - Speichern Sie die Datei (File > Save)
- Klicken Sie auf das ><-Symbol in der unteren linken Ecke
- Wählen Sie Rebuild Container aus dem Menü
- VS Code erstellt den Container mit Ihrem neuen Paket neu (dies dauert 2-5 Minuten)
- Um zu überprüfen, öffnen Sie ein R-Terminal und geben Sie ein:
library(data.table)
Wenn es ohne Fehler geladen wird, ist das Paket permanent installiert.
Nächste Schritte
- Erstellen Sie ein neues R-Skript - Erstellen Sie eine neue
.R-Datei imR/-Ordner, schreiben Sie Datenanalyse-Code mit eingebauten Datensätzen wiemtcarsoderiris - Installieren Sie R-Pakete - Fügen Sie Pakete hinzu, die Sie benötigen, indem Sie das Dockerfile bearbeiten und den Container neu erstellen
- Erkunden Sie tidyverse - Probieren Sie Datenmanipulation mit
dplyrund Visualisierung mitggplot2mit Beispieldatensätzen
Fehlerbehebung
- Docker Desktop läuft nicht - Öffnen Sie Docker Desktop und warten Sie auf den grünen Statusanzeiger, bevor Sie den Container erneut öffnen
- Container-Build schlägt fehl - Überprüfen Sie Ihre Internetverbindung; der erste Build lädt ~2GB herunter. Klicken Sie auf Rebuild Container, um es erneut zu versuchen
Workflow-Überblick
Diese Einrichtung gibt Ihnen eine professionelle R-Entwicklungsumgebung:
- VS Code bietet den Code-Editor mit Syntax-Hervorhebung und IntelliSense
- Docker-Container führt eine isolierte Linux-Umgebung mit R und allen Abhängigkeiten aus
- Rocker-Image (
rocker/shiny-verse) enthält R, Shiny, tidyverse und Entwicklertools - Dev-Container-Konfiguration (
.devcontainer/) installiert automatisch VS Code-Erweiterungen für R und Shiny - Port-Weiterleitung ermöglicht Ihnen den Zugriff auf die Shiny-App, die innerhalb des Containers läuft, von Ihrem Browser aus
Täglicher Workflow
Sobald alles eingerichtet ist, hier Ihre tägliche Routine:
- Docker Desktop starten - Öffnen Sie die App und warten Sie auf den grünen Statusanzeiger (Docker muss laufen)
- VS Code öffnen - Starten Sie VS Code und öffnen Sie Ihren Projektordner
- Im Container erneut öffnen - Falls nicht bereits im Container, klicken Sie auf das ><-Symbol (unten links) und wählen Sie Reopen in Container
- Code schreiben und ausführen - Bearbeiten Sie
.R-Dateien, führen Sie sie Zeile für Zeile mitStrg+Enter/Cmd+Enteraus, oder führen Sie Shiny-Apps mit der Schaltfläche ▶ Run Shiny App aus - Ihre Arbeit speichern - Ihre Code-Dateien (
.R,.Rmd) werden auf Ihrem Computer gespeichert und bleiben über Sitzungen hinweg erhalten - Committen und pushen - Verwenden Sie GitHub Desktop, um Ihre Änderungen zu committen und in das Repository zu pushen
Was ist Docker Desktop?
Docker Desktop ist eine Anwendung, die die Nutzung von Docker auf Ihrem Computer erleichtert. Sie stellt die Hintergrunddienste bereit, die Docker benötigt, und bietet ein Fenster, in dem Sie Ihre Container, Images, Speicher und andere Docker-Ressourcen sehen und verwalten können.
Sie können sich Docker Desktop als Steuerzentrale für Ihre Container vorstellen. Wenn Sie Docker Desktop öffnen, startet es die Docker-Engine. Die Docker-Engine ist der Teil von Docker, der Container tatsächlich erstellt und ausführt. Normalerweise müssen Sie nicht direkt mit der Engine arbeiten, da Docker Desktop sie für Sie verwaltet.
Was macht Docker Desktop?
Docker Desktop übernimmt mehrere wichtige Aufgaben:
- Führt die Docker-Engine aus - Die Engine erstellt und betreibt die Container, in denen Ihre Software läuft.
- Lädt Images herunter - Ein Image ist ein fertiges Startpaket, zum Beispiel ein Linux-System mit R und gängigen R-Paketen. In diesem Tutorial verwendet das Projekt ein Image aus dem Rocker-Projekt.
- Erstellt Container - Docker verwendet das Dockerfile und die Dev-Container-Einstellungen dieses Projekts, um einen Container zu erstellen, der für die R-Entwicklung vorbereitet ist.
- Startet und stoppt Container - Sie können den Container bei Bedarf öffnen, pausieren, neu starten oder stoppen.
- Verbindet Container mit Ihren Dateien - Ihr Projektordner ist im Container verfügbar, sodass Sie Dateien in VS Code bearbeiten können, während der Code im Container läuft.
- Verbindet Container mit Ihrem Browser - Wenn die Shiny-App innerhalb des Containers läuft, sorgen Docker Desktop und VS Code gemeinsam dafür, dass die App in Ihrem Webbrowser erreichbar ist.
Wie Docker Desktop in dieses Tutorial passt
Drei Teile arbeiten zusammen:
- Docker Desktop führt die Docker-Engine auf Ihrem Computer aus.
- VS Code ist der Editor, in dem Sie R-Code schreiben und ausführen.
- Der Dev Container stellt eine vorbereitete Linux-Umgebung bereit, die R, R-Pakete und die in diesem Projekt verwendeten Werkzeuge enthält.
Wenn Sie Reopen in Container wählen, bittet VS Code Docker Desktop, den Container des Projekts zu erstellen oder zu starten. Die Anwendung läuft weiterhin auf Ihrem Computer, aber die R-Umgebung befindet sich im Container. So bleiben R-Version, Pakete und Systemwerkzeuge vom Rest Ihres Computers getrennt.
Docker Desktop ersetzt weder VS Code noch R noch Ihren Webbrowser. Es stellt die Umgebung bereit, in der der Container läuft. In VS Code arbeiten Sie, R ist die Sprache, die Sie verwenden, und im Browser sehen Sie sich die Shiny-App an.
Warum Docker Desktop verwenden?
Wenn Sie R und alle benötigten Pakete direkt auf Ihrem Computer installieren, kann es manchmal zu Versionskonflikten kommen. Ein Projekt braucht vielleicht eine andere Paketversion als ein anderes Projekt. Docker Desktop hilft, solche Konflikte zu vermeiden, indem es jedem Projekt eine eigene, kontrollierte Umgebung gibt.
Wenn zum Beispiel eine Kommilitonin oder ein Kommilitone dieselben Projektdateien und Docker-Einstellungen verwendet, kann Docker eine Umgebung erstellen, die Ihrer sehr ähnlich ist. Dadurch ist es weniger wahrscheinlich, dass Sie einen Fehler sehen, der nur durch unterschiedliche Softwareversionen entsteht. Ihr R-Code und Ihre Projektdateien bleiben auf Ihrem Computer, während die Werkzeuge, die zum Ausführen benötigt werden, im Container organisiert sind.
Docker Desktop muss geöffnet sein und laufen, bevor Sie dieses Projekt in einem Container erstellen oder erneut öffnen. Wenn Docker Desktop geschlossen ist, kann VS Code den Container nicht starten, und Sie sehen möglicherweise eine Fehlermeldung, dass Docker nicht läuft.
Erstellt von Steven Ge am 7. Dezember 2025.