Claude Code im Dev Container: das sichere, reproduzierbare Setup
Installieren Sie die Dev-Containers-Erweiterung, halten Sie Docker am Laufen, ergänzen Sie das offizielle claude-code-Feature, Reopen in Container, melden Sie sich aus dem Terminal an und halten Sie die Auth über Rebuilds hinweg am Leben — jeder Schritt gegen Anthropics Dev-Container-Doku verifiziert.
Kurz zusammengefasst
- Installieren Sie die Dev-Containers-Erweiterung, halten Sie Docker am Laufen und wählen Sie dann Reopen in Container in jedem Repo mit .devcontainer/ — Claude Code und jeder Befehl, den er ausführt, laufen im Container, nicht auf Ihrer Maschine.
- Das offizielle Feature — "ghcr.io/anthropics/devcontainer-features/claude-code:1.0" im features-Block — installiert die CLI in jeden Devcontainer; VS Code bekommt zusätzlich die Erweiterung, und beide teilen sich ein ~/.claude.
- Melden Sie sich aus dem Container-Terminal an; erreicht der Browser-Callback den Container nicht, fügen Sie den Code am Prompt ein. Auth über Rebuilds retten Sie mit einem ~/.claude-Volume plus containerEnv.CLAUDE_CONFIG_DIR.
- Ein Dev Container ersetzt die Umgebung (das /sandbox begrenzt dagegen einzelne Befehle auf Ihrem Host). Beides kombiniert: Container für die Umgebung, Sandbox und Permission-Prompts fürs Verhalten.
Run Your AI Coding Agent in Dev Containers - Complete Beginner's Guide
Kanal: Visual Studio Code15:39
Step-by-Step: Run Claude Code SAFELY in a Dev Container
Kanal: Fuzz Puppy6:56
Development containers — official documentation
Offizielle Doku: code.claude.com/docs
Jeder Setup-Schritt, jeder Feature-Name und jeder Zugangsdaten-Pfad auf dieser Seite wurde gegen die offizielle Development-Containers-Dokumentation geprüft; die Videos oben sind die visuelle und faktische Quelle.
Screenshots werden ihren Urhebern zugeordnet, mit Deep-Links zu den exakten Zeitstempeln. Keine Kamera-Bilder von Gesichtern.
Claude Code im Dev Container, Schritt für Schritt
Teil 1 — Voraussetzungen: VS Code trifft Docker
- 1
Die Dev-Containers-Erweiterung installieren
Öffnen Sie in VS Code die Extensions-Ansicht und installieren Sie Dev Containers von Microsoft. Diese Erweiterung bringt den Remote-Indikator in der Statusleiste, den Befehl Reopen in Container und den Remote Explorer mit — der gesamte Workflow unten läuft über sie. Docker braucht es dafür noch nicht.

Die Dev-Containers-Erweiterung ist es, die Reopen in Container zu VS Code hinzufügt — installieren Sie sie zuerst über die Extensions-Ansicht.Ansehen bei 2:00 - 2
Docker Desktop installieren und starten
Dev Containers sind echte Container, also muss eine Container-Engine laufen, bevor sich etwas öffnet. Docker Desktop ist die übliche Wahl auf macOS und Windows; unter Linux tut es Docker Engine. Starten Sie es und lassen Sie es laufen — eine stehengebliebene Engine ist die häufigste Ursache für ein kleben gebliebenes "Opening Remote" beim ersten Versuch.

Docker Desktop muss nur laufen; eine leere Containers-Liste ist genau das Bild einer gesunden Konfiguration vor dem ersten Container.Ansehen bei 2:12 - 3
Wissen, was sich für Claude Code ändert
Nach Reopen in Container betreibt VS Code seinen Server im Container — und jeder Befehl, den Claude Code ausführt, ebenso. Installationen, Testläufe und Datei-Edits bleiben im Container, während der Workspace-Ordner zurück in Ihr Repo gemountet wird. Ihre Maschine braucht nur VS Code und Docker; Toolchains und Abhängigkeiten leben im Image, und ein verirrtes Agenten-Experiment kann nichts außerhalb anfassen.
Teil 2 — Ein funktionierender Container, von A bis Z
- 4
Einen fertigen Dev Container öffnen
Der schnellste Weg, die Mechanik zu sehen: Wählen Sie im Remote Explorer ein Beispiel wie den Go-Dev-Container. VS Code klont github.com/microsoft/vscode-remote-try-go und öffnet es in einem Container-Volume — noch ohne jede Konfiguration von Ihnen.

Der Remote Explorer bringt fertige Beispiele mit — wählen Sie eines, und VS Code klont das Repo direkt in ein Container-Volume.Ansehen bei 2:30 - 5
VS Code bauen und verbinden lassen
Der erste Verbindungsaufbau klont das Repo, zieht das Container-Image Schicht für Schicht und startet den Container — die Statusleiste meldet "Connecting to Dev Container". Bei einer langsamen Leitung ist das die längste Wartezeit des Setups; jedes spätere Öffnen wiederverwendet das Image und dauert Sekunden.

Der erste Build lädt das Container-Image Schicht für Schicht; die Statusleiste verfolgt die Verbindung zum Dev Container.Ansehen bei 2:52 - 6
Bestätigen, dass das Terminal im Container liegt
Öffnen Sie ein neues Terminal und geben Sie die Toolchain-Version aus (hier go version). Die Ausgabe nennt OS und Architektur des Containers, nicht die Ihres Laptops. Genau hier würden Sie claude starten — und alles, was er ausführt, bleibt im Container.

go version zeigt die Toolchain des Containers, nicht die des Laptops — starten Sie claude in diesem Terminal, bleibt er ebenfalls drin.Ansehen bei 3:50 - 7
Die devcontainer.json lesen
Die Datei .devcontainer/devcontainer.json definiert die gesamte Umgebung: das Basis-Image (oder ein Dockerfile), die VS-Code-Erweiterungen, die im Container installiert werden, weitergeleitete Ports, postCreateCommand-Schritte und den remoteUser. Für Claude Code ist diese Datei auch der Ort für das offizielle Feature und das Zugangsdaten-Volume — behandelt in Schritt 9 und 13.

Alles, woraus der Container gebaut wird, liegt in .devcontainer/devcontainer.json: Image, Erweiterungen, weitergeleitete Ports, Post-Create-Befehle.Ansehen bei 4:40 - 8
Den Agenten auf den Workspace richten
Hängen Sie @workspace im Agenten-Panel an und bitten Sie ihn, das Projekt zu erklären. Die Erklärung und jeder Befehl dahinter laufen im Container. Claude Code funktioniert genauso, sobald seine CLI im Image installiert ist: @workspace-artiger Kontext plus Befehle, die den Container nie verlassen.

Der Agent wird gebeten, das Projekt via @workspace zu erklären — jeder Befehl läuft im Container.Ansehen bei 5:20 - 9
Auf das offizielle Claude-Code-Feature wechseln
Keine manuellen Installationen: Fügen Sie "ghcr.io/anthropics/devcontainer-features/claude-code:1.0" in den features-Block der devcontainer.json ein und bauen Sie neu. Das Feature installiert die CLI — und, wenn der Container in VS Code geöffnet wird, auch die Claude-Code-Erweiterung; beide teilen sich dasselbe ~/.claude mit dem Terminal. Fehlt im Basis-Image Node.js, sehen Sie "Failed to install Node.js and npm": Ergänzen Sie das Node-Feature darüber. Umgebungs-Einstellungen wie CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC oder DISABLE_AUTOUPDATER gehören unter containerEnv, und Mounts können Ihre anderen lokalen Repos in den Container ziehen.
- 10
Die App starten und den weitergeleiteten Port nutzen
Starten Sie die App im Container (Debug-Panel, npm run dev, go run — was der Stack verlangt) und VS Code erkennt den lauschenden Port: Eine Benachrichtigung bietet an, ihn im lokalen Browser zu öffnen. Der Server verlässt den Container nie; das Forwarding sorgt nur dafür, dass localhost sich wie üblich verhält.

Die App läuft auf Port 9000 im Container; VS Code leitet ihn weiter, damit localhost genau wie üblich funktioniert.Ansehen bei 6:08
Teil 3 — Ihr eigenes Repo und die Anmeldung
- 11
Einen Dev Container zum eigenen Projekt hinzufügen
Führen Sie in jedem Repo Dev Containers: Add Dev Container Configuration Files über die Command Palette oder den Remote-Indikator aus und wählen Sie "Add configuration to workspace folder". Mit dem Code committet, gibt die Konfiguration Teamkollegen — und Codespaces — dieselbe Umgebung gratis.

Noch keine devcontainer.json? VS Code generiert eine aus einer Vorlage — behalten Sie sie im Workspace, damit git sie teilt.Ansehen bei 9:00 - 12
Vorlage und Features wählen
VS Code schlägt eine Vorlage passend zu Ihrem Stack vor (Node.js, Python, Go…), dann zeigt es die Feature-Liste — wiederverwendbare Installer wie Git LFS oder die GitHub CLI. In dieselbe Liste rutscht das claude-code-Feature aus Schritt 9. Akzeptieren Sie die Vorgaben (oder lassen Sie den Agenten die generierte Datei verfeinern) und öffnen Sie dann im Container neu.

In der Feature-Liste findet eine Claude-Code-Feature-Zeile ihren Platz neben dem, was die Vorlage vorschlägt.Ansehen bei 9:48 - 13
Im Container anmelden
Führen Sie claude im integrierten Terminal aus und wählen Sie Ihre Anmeldung (Claude-Abo oder Anthropic Console). Der Browser öffnet sich auf Ihrem Host; erreicht der Callback den Container nicht, kopieren Sie den Code aus dem Browser und fügen Sie ihn am Prompt "Paste code here if prompted" ein. Damit die Auth Rebuilds übersteht, mounten Sie ein Volume auf ~/.claude und setzen containerEnv.CLAUDE_CONFIG_DIR auf denselben Pfad — die Kontodatei ~/.claude.json liegt außerhalb dieses Ordners, deshalb zählen beide Hälften. Für Headless-Läufe oder Codespaces erzeugen Sie einen Token mit claude setup-token und übergeben ANTHROPIC_API_KEY oder CLAUDE_CODE_OAUTH_TOKEN.
Dev Container vs. /sandbox: welche Isolation brauchen Sie?
Claude Code liefert zwei Isolation-Antworten, und sie lösen verschiedene Probleme. Ein Dev Container ersetzt die Umgebung, in der der Agent arbeitet; das eingebaute Sandboxing begrenzt die Befehle, die er auf Ihrer aktuellen Maschine ausführt. Die offizielle Doku positioniert beide als ergänzend — der Referenz-Devcontainer bündelt sogar ein Egress-Restriction-Skript.
- 1Geltungsbereich. Ein Dev Container tauscht die ganze Umgebung — OS, Toolchain, Abhängigkeiten — gegen die in devcontainer.json definierte. Sandboxing behält Ihre Maschine und beschränkt, was jeder bash-Befehl lesen, schreiben und im Netz erreichen darf.
- 2Voraussetzungen. Dev Containers brauchen Docker (Desktop oder Engine) plus die Dev-Containers-Erweiterung; Sandboxing ist in Claude Code eingebaut und braucht beides nicht.
- 3Team-Mechanik. devcontainer.json wird committet, also bauen jeder Kollege und jeder Codespace dieselbe Umgebung; Sandbox-Richtlinien leben in den Claude-Code-Einstellungen und folgen dem Benutzer, nicht dem Repo.
- 4Schadensradius. Im Container trifft ein verunglücktes rm -rf oder eine Schurken-Installation ein wegwerfbares Dateisystem, Ihr Host bleibt unberührt. Die Sandbox zielt aufs selbe Ergebnis pro Befehl — ohne Container-Grenze.
- 5Nehmen Sie einen Dev Container, wenn das Projekt selbst eine Umgebung braucht: mehrere Runtimes, sauberes Onboarding, Cloud-Entwicklung. Nehmen Sie die Sandbox als alltägliche Schutzschiene für Sitzungen auf Ihrem Host. Beides kombiniert: Claude Code im Dev Container ausführen und Sandboxing samt Permission-Prompts anlassen.
Eine Zeile trennt sie zusätzlich: /sandbox ist eine Pro-Sitzung-Policy, die Sie mitten im Gespräch anpassen können, während ein Dev Container vor Sitzungsbeginn feststeht — eine Änderung heißt Rebuild. Unbeaufsichtigte Batch-Läufe stützen sich auf beides zugleich: Container-Benutzer ohne root, eingeschränkter Egress und --dangerously-skip-permissions nur im Container.
Etwas benimmt sich nicht? Hier anfangen
Die meiste Dev-Container-Reibung mit Claude Code fällt in eine Handvoll bekannter Muster. Jede Lösung unten stammt direkt aus der offiziellen Development-Containers-Dokumentation.
- 1"Failed to install Node.js and npm" bei der Feature-Installation: Das Basis-Image hat kein Node.js. Ergänzen Sie das Node-Feature (ghcr.io/devcontainers/features/node:1) über dem claude-code-Feature im features-Block und bauen Sie neu.
- 2Die Anmeldung gelingt im Browser, doch der Container bleibt ausgeloggt: Der OAuth-Callback erreicht den Container nicht. Kopieren Sie den im Browser gezeigten Code und fügen Sie ihn am Prompt "Paste code here if prompted" im Terminal ein.
- 3Anmeldung und Einstellungen verschwinden nach jedem Rebuild: Nichts persistiert ~/.claude. Mounten Sie ein benanntes Volume auf diesen Pfad und setzen Sie containerEnv.CLAUDE_CONFIG_DIR darauf — nehmen Sie die Variable devcontainerId in den Volume-Namen auf, damit Projekte isoliert bleiben. Auf Codespaces überlebt der Ordner Stop/Start, wird aber bei einem vollen Rebuild geleert; legen Sie stattdessen ANTHROPIC_API_KEY oder einen CLAUDE_CODE_OAUTH_TOKEN aus claude setup-token als Secret ab.
- 4Claude-Code-Versionsüberraschungen: Das Feature-Tag claude-code:1.0 pinnt das Installationsskript, nicht die CLI — die neueste Version wird installiert und aktualisiert sich im Container automatisch. Um eine Version einzufrieren, installieren Sie sie im Dockerfile mit npm install -g @anthropic-ai/claude-code@X.Y.Z.
- 5"Is Docker running?" oder ein kleben gebliebenes "Opening remote": Die Engine ist nicht erreichbar — starten Sie Docker Desktop (oder den Daemon) und versuchen Sie es erneut. Verweigert --dangerously-skip-permissions den Start, läuft der Container als root; setzen Sie remoteUser auf einen Nicht-root-Benutzer wie "vscode". Organisationen können den Bypass-Modus ganz über managed-settings.json unter /etc/claude-code abschalten.
Neu bauen ist der universelle Retry: Command Palette → "Dev Containers: Rebuild Container" liest devcontainer.json erneut und führt die Features nach jeder Änderung neu aus. Verhält sich ein Rebuild anders als ein frischer Klon, löschen Sie den Container und öffnen Sie neu — Images und benannte Volumes überleben die Löschung.
