Dieses Repository enthält ein Beispiel-Projekt für Forschende, die Docker zum ersten Mal ausprobieren möchten. Es zeigt, wie man ein Analyse-Skript (R) mit Docker containerisiert und reproduzierbar macht.
Das Projekt enthält alle Dateien, um das Beispiel, welches im Tutorial-Video gezeigt wurde, selber auszuprobieren.
Link zum Tutorial von EVA4MII:
.
├── Dockerfile # Anleitung für Docker, wie das Image gebaut wird
├── Docker_Tutorial.R # Das R-Skript (Analyse-Code)
├── Docker_In\
│ └── pima_raw_data.csv # Eingabedaten (CSV)
└── Docker_Out\
├── pima_summary_metrics.csv # Beispiel-Ergebnis: Statistiken
└── pima_bmi_glucose_plot.png # Beispiel-Ergebnis: Plot
| Datei | Erklärung |
|---|---|
| Dockerfile | Sagt Docker: "Starte mit R, installiere diese Pakete, kopiere das Skript." Kann mit jedem Texteditor geöffnet und bearbeitet werden; wichtig: Datei hat keine Dateiendung! |
| Docker_Tutorial.R | Das R-Skript: liest CSV → berechnet Statistiken → erstellt Plot → speichert Ergebnisse |
| Docker_In | Ordner für Eingabedaten |
| pima_raw_data.csv | Eingabedaten: Gesundheitsmessungen von Frauen der Pima-Indianer-Bevölkerung |
| Docker_Out | Ordner für Ergebnisse. Enthält bereits die Dateien, die das R-Skript generiert. |
Zusätzlich liegt das fertige Image im Docker Hub mit dem Namen schoenherrl/eva4mii_docker_tutorial.
Hier sind alle Schritte: Build → Save → Load → Run
Bevor du das Image baust, schau dir Docker_Tutorial.R an. Das Skript hat Docker-spezifische Besonderheiten:
1. Umgebungsvariable für den Dateinamen:
csv_filename <- Sys.getenv("CSV_FILE")Das Skript erwartet, dass du die CSV-Datei als Umgebungsvariable CSV_FILE übergibst. So kann das gleiche Skript mit verschiedenen Dateien laufen.
2. Feste Input/Output-Ordner:
input_file <- file.path("/input", csv_filename)
write.csv(summary_stats, "/output/pima_summary_metrics.csv", row.names = FALSE)Das Skript erwartet:
- Eingabedaten im Container-Ordner
/input/(wird von außen mounted) - Ergebnisse werden in
/output/gespeichert (wird von außen mounted)
Du bindest diese Ordner während der Container-Erstellung ein (s. Schritt 4).
3. Fehlerbehandlung & Logging:
Das Skript gibt hilfreiche Fehlermeldungen aus (mit cat()), z.B. wenn die CSV nicht gefunden wird. Das hilft beim Debugging.
Was Kolleg:innen wissen müssen:
Wenn du das Image/Container mit Kollegen teilst, sag ihnen:
- ✅ Wie heißen die Umgebungsvariablen für das Skript? (Antwort:
CSV_FILE) - ✅ Welche Ergebnisdateien werden erstellt? (Antwort:
pima_summary_metrics.csvundpima_bmi_glucose_plot.png) - ✅ Welche Ordner müssen gemountet werden? (Antwort: lokaler Ordner
\Docker_Inauf Container-Ordner/inputund lokaler Ordner\Docker_Outauf Container-Ordner/output)
-
Klone dieses Repo oder lade es dir als .zip herunter und entpacke es
-
Docker Desktop starten
-
Öffne das Terminal
-
Navigiere zum Repo-Ordner:
cd /pfad/zum/pima-docker-repo -
Baue das Image:
docker build -t pima-analysis:1.0 .
Docker liest die Dockerfile, installiert die R-Pakete und erstellt ein Image. Das dauert beim ersten Mal ein paar Minuten.
Speichere das fertige Image als TAR-Datei, so kannst du es mit Kolleg:innen teilen:
docker save pima-analysis:1.0 -o pima-analysis.tarDie Datei pima-analysis.tar wird im aktuellen Ordner erstellt.
Wenn du das Image später (oder auf einem anderen Computer) nutzen möchtest, lade es aus der TAR:
docker load --input pima-analysis.tarWenn du das Image erstmalig entpackst, dann taucht es nun im Images Tab im Docker Desktop auf und kann von dort ausgeführt werden.
Alternativ: Das fertige Image liegt außerdem im Docker Hub unter dem Namen schoenherrl/eva4mii_docker_tutorial.
Von dort kann es über Docker Desktop/Docker Hub auch direkt gepullt werden und mit Schritt 4 weiter gemacht werden.
- Öffne den Images Tab in Docker Desktop
- Klicke beim Image auf das Play-Icon (▶)
- Lege einen Namen für den Container fest, bspw.: docker_tutorial
- Volumes hinzufügen (optional settings Tab)
- Lege die Host Paths fest, das sind die Pfade zu den Input und Output Ordnern, die lokal auf deinem Rechner liegen
- Lege die Container Paths fest, diese stehen im R-Skript und müssen dir vom Skript-Ersteller mitgeteilt werden; in unserem Falle /input und /output
- mehrere Volumes kannst du mit dem + Symbol hinzufügen
- Environment Variables hinzufügen
- die Variable heißt CSV_FILE
- der Value ist der Dateiname unserer Input-Datei, hier pima_raw_data.csv
- Klicke auf Run: Container startet
Im output/-Ordner auf deinem Rechner findest du nun:
- pima_summary_metrics.csv – Statistiken (Anzahl, Durchschnitte, Diabetes-Häufigkeit)
- pima_bmi_glucose_plot.png – Visualisierung (Beziehung BMI ↔ Glukose)
Viel Erfolg beim Lernen! 🐳
Docker and the Docker logo are trademarks or registered trademarks of Docker, Inc. in the United States and/or other countries.
Microsoft, Windows, Windows Subsystem for Linux, and Microsoft Azure are trademarks of the Microsoft group of companies.
GitHub is a trademark of GitHub, Inc.
All other trademarks are the property of their respective owners.