Ein Entwicklungscontainer, oder Dev Container, ermöglicht es Ihnen, eine identische, isolierte Umgebung zu definieren, die jeder Ingenieur in Ihrem Team ausführen kann. Mit Claude Code, das in diesem Container installiert ist, werden die Befehle, die Claude ausführt, darin ausgeführt, anstatt auf dem Host-Rechner, während Änderungen an Ihren Projektdateien in Ihrem lokalen Repository angezeigt werden, während Sie arbeiten. Diese Seite behandelt die Installation von Claude Code in einem Entwicklungscontainer und die folgenden Konfigurationsthemen. Jedes Thema ist eigenständig, daher springen Sie zu denjenigen, die dem entsprechen, was Sie einrichten müssen:Documentation Index
Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
- Authentifizierung und Einstellungen über Neuerstellungen hinweg beibehalten
- Organisationsrichtlinie durchsetzen
- Netzwerk-Egress einschränken
- Ohne Berechtigungsaufforderungen ausführen
Wie Entwicklungscontainer mit Ihrem Editor funktionieren
Wie Entwicklungscontainer mit Ihrem Editor funktionieren
claude im integrierten Terminal ausführen; beide werden im Container ausgeführt und teilen die gleiche ~/.claude-Konfiguration.Claude Code zu Ihrem Entwicklungscontainer hinzufügen
Claude Code wird in jeden Entwicklungscontainer durch die Claude Code Dev Container Feature installiert. Die Einstellungen funktionieren mit jedem Tool, das die Dev Containers-Spezifikation unterstützt, wie VS Code, GitHub Codespaces oder JetBrains IDEs. Die folgenden Schritte verwenden VS Code als Beispiel. Wenn Sie den Container in VS Code oder Codespaces öffnen, fügt die Feature auch die Claude Code VS Code-Erweiterung hinzu; andere Editoren ignorieren diesen Teil.Erstellen oder aktualisieren Sie devcontainer.json
Speichern Sie das Folgende als Ersetzen Sie die
.devcontainer/devcontainer.json in Ihrem Repository, oder fügen Sie den features-Block zu Ihrer vorhandenen Datei hinzu.Das Versions-Tag am Ende, wie :1.0, fixiert das Installationsskript der Feature, nicht die Claude Code-Version. Die Feature installiert die neueste Claude Code-Version, und Claude Code aktualisiert sich standardmäßig selbst im Container.Um die CLI-Version zu fixieren oder die automatische Aktualisierung zu deaktivieren, siehe Organisationsrichtlinie durchsetzen..devcontainer/devcontainer.json
image-Zeile durch das Basis-Image Ihres Projekts, oder entfernen Sie sie, wenn Ihre vorhandene Datei ein Dockerfile verwendet.Erstellen Sie den Container neu
Öffnen Sie die VS Code-Befehlspalette mit
Cmd+Shift+P auf Mac oder Ctrl+Shift+P auf Windows und Linux, und führen Sie Dev Containers: Rebuild Container aus.Für andere Tools folgen Sie der Neuerstellungsaktion dieses Tools: siehe Neuerstellung in GitHub Codespaces, die Dev Containers CLI, oder die Dev Container-Dokumentation Ihrer IDE.- Anthropic: Melden Sie sich über einen Browser mit Ihrem Claude- oder Anthropic Console-Konto an
- Amazon Bedrock, Google Vertex AI oder Microsoft Foundry: Claude Code verwendet Ihre Cloud-Anbieter-Anmeldedaten, ohne Browser-Aufforderung
containerEnv, ein Codespaces-Geheimnis oder die Workload-Identität Ihrer Cloud, anstatt Anmeldedatendateien vom Host einzubinden. Siehe Amazon Bedrock, Google Vertex AI oder Microsoft Foundry für die Anmeldedatenkette, die Claude Code liest.
Siehe Wählen Sie Ihren API-Anbieter, um zu entscheiden, welcher Weg zu Ihrer Organisation passt.
Wenn die Browser-Anmeldung abgeschlossen ist, aber der Rückruf den Container nie erreicht, kopieren Sie den im Browser angezeigten Code und fügen Sie ihn bei der Aufforderung
Paste code here if prompted im Terminal ein. Dies kann vorkommen, wenn die Port-Weiterleitung des Editors den localhost-Rückruf nicht leitet.Authentifizierung und Einstellungen über Neuerstellungen hinweg beibehalten
Standardmäßig wird das Home-Verzeichnis des Containers bei einer Neuerstellung verworfen, daher müssen sich Ingenieure jedes Mal erneut anmelden. Claude Code speichert sein Authentifizierungs-Token, Benutzereinstellungen und Sitzungsverlauf unter~/.claude. Binden Sie ein benanntes Volume an diesem Pfad ein, um diesen Status über Neuerstellungen hinweg zu bewahren.
Das folgende Beispiel bindet ein Volume im Home-Verzeichnis des node-Benutzers ein:
devcontainer.json
/home/node durch das Home-Verzeichnis des remoteUser Ihres Containers. Wenn Sie das Volume an einem anderen Ort als ~/.claude einbinden, setzen Sie CLAUDE_CONFIG_DIR auf den Mount-Pfad, damit Claude Code dort liest und schreibt.
Um den Status pro Projekt zu isolieren, anstatt ein Volume über alle Repositories hinweg zu teilen, fügen Sie die Variable ${devcontainerId} in den Quellnamen ein. Die Referenzkonfiguration verwendet source=claude-code-config-${devcontainerId} zu diesem Zweck.
In GitHub Codespaces bleibt ~/.claude über das Stoppen und Starten eines Codespace erhalten, wird aber immer noch gelöscht, wenn Sie den Container neu erstellen, daher gilt die obige Volume-Einbindung auch dort. Um die Authentifizierung über Codespaces hinweg zu tragen, speichern Sie ANTHROPIC_API_KEY oder ein CLAUDE_CODE_OAUTH_TOKEN von claude setup-token als Codespaces-Geheimnis; Codespaces macht Geheimnisse automatisch als Umgebungsvariablen im Container verfügbar.
Organisationsrichtlinie durchsetzen
Ein Entwicklungscontainer ist ein bequemer Ort, um Organisationsrichtlinie anzuwenden, da das gleiche Image und die gleiche Konfiguration auf jedem Rechner eines Ingenieurs ausgeführt werden. Claude Code liest/etc/claude-code/managed-settings.json auf Linux und wendet es mit der höchsten Priorität in der Einstellungshierarchie an, daher überschreiben Werte dort alles, das ein Ingenieur in ~/.claude oder dem .claude/-Verzeichnis des Projekts setzt. Kopieren Sie die Datei von Ihrem Dockerfile an den richtigen Ort:
Dockerfile
containerEnv in Ihrer devcontainer.json hinzu. Das folgende Beispiel deaktiviert Telemetrie und Fehlerberichterstattung und verhindert, dass Claude Code sich nach der Installation automatisch aktualisiert:
devcontainer.json
npm install -g @anthropic-ai/claude-code@X.Y.Z, anstatt die Feature zu verwenden, und setzen Sie DISABLE_AUTOUPDATER wie oben gezeigt.
Für die vollständige Liste der Richtlinienkontrollen, einschließlich Berechtigungsregeln, Tool-Einschränkungen und MCP-Server-Allowlists, siehe Richten Sie Claude Code für Ihre Organisation ein.
Um MCP-Server im Container verfügbar zu machen, definieren Sie sie im Projekt-Scope in einer .mcp.json-Datei im Repository-Root, damit sie zusammen mit Ihrer Dev Container-Konfiguration eingecheckt werden. Installieren Sie alle Binärdateien, von denen lokale Stdio-Server abhängen, in Ihrem Dockerfile, und fügen Sie Remote-Server-Domains zu Ihrer Netzwerk-Allowlist hinzu.
Netzwerk-Egress einschränken
Sie können den ausgehenden Datenverkehr des Containers auf nur die Domains beschränken, die Claude Code benötigt. Siehe Netzwerkzugriffsanforderungen für die Inferenz- und Authentifizierungsdomains, und Telemetrie-Dienste für die optionalen Telemetrie- und Fehlerberichterstattungsverbindungen und wie man sie deaktiviert. Der Referenz-Container enthält eininit-firewall.sh-Skript, das den gesamten ausgehenden Datenverkehr außer den Domains blockiert, die Claude Code und Ihre Entwicklungstools benötigen. Das Ausführen einer Firewall in einem Container erfordert zusätzliche Berechtigungen, daher fügt die Referenz die NET_ADMIN- und NET_RAW-Fähigkeiten über runArgs hinzu. Das Firewall-Skript und diese Fähigkeiten sind nicht erforderlich für Claude Code selbst: Sie können sie weglassen und sich stattdessen auf Ihre eigenen Netzwerkkontrollen verlassen.
Ohne Berechtigungsaufforderungen ausführen
Da der Container Claude Code als Nicht-Root-Benutzer ausführt und die Befehlsausführung auf den Container beschränkt, können Sie--dangerously-skip-permissions für unbeaufsichtigte Operationen übergeben. Die CLI lehnt dieses Flag ab, wenn es als Root gestartet wird, daher bestätigen Sie, dass remoteUser auf ein Nicht-Root-Konto gesetzt ist.
Das Überspringen von Berechtigungsaufforderungen entfernt Ihre Gelegenheit, Tool-Aufrufe zu überprüfen, bevor sie ausgeführt werden. Claude kann immer noch jede Datei im eingebundenen Arbeitsbereich ändern, die direkt auf Ihrem Host angezeigt wird, und alles erreichen, das die Netzwerkrichtlinie des Containers erlaubt. Kombinieren Sie dieses Flag mit den Netzwerk-Egress-Einschränkungen oben, um zu begrenzen, was eine umgangene Sitzung erreichen kann.
Wenn Sie weniger Aufforderungen ohne Deaktivierung von Sicherheitsprüfungen möchten, erwägen Sie stattdessen Auto-Modus, der einen Klassifizierer hat, der Aktionen überprüft, bevor sie ausgeführt werden. Um zu verhindern, dass Ingenieure --dangerously-skip-permissions überhaupt verwenden, setzen Sie permissions.disableBypassPermissionsMode auf "disable" in verwalteten Einstellungen.
Probieren Sie den Referenz-Container aus
Dasanthropics/claude-code-Repository enthält einen Beispiel-Entwicklungscontainer, der die CLI, die Egress-Firewall, persistente Volumes und eine Zsh-basierte Shell kombiniert. Es wird als funktionierendes Beispiel bereitgestellt, anstatt als verwaltetes Basis-Image; verwenden Sie es, um zu sehen, wie die Teile zusammenpassen, bevor Sie sie auf Ihre eigene Konfiguration anwenden.
Installieren Sie Voraussetzungen
Installieren Sie VS Code und die Dev Containers-Erweiterung.
Klonen Sie die Referenz
Klonen Sie das Claude Code-Repository und öffnen Sie es in VS Code.
Im Container erneut öffnen
Wenn Sie dazu aufgefordert werden, klicken Sie auf Im Container erneut öffnen, oder führen Sie Dev Containers: Im Container erneut öffnen aus der Befehlspalette aus.
.devcontainer/-Verzeichnis in Ihr Repository und passen Sie das Dockerfile für Ihren Toolchain an, oder kehren Sie zu Claude Code zu Ihrem Entwicklungscontainer hinzufügen zurück, um nur die Feature zu einer Einrichtung hinzuzufügen, die Sie bereits haben.
Die Referenzkonfiguration besteht aus drei Dateien. Keine davon sind erforderlich, wenn Sie Claude Code über die Feature zu Ihrem eigenen Entwicklungscontainer hinzufügen, aber sie zeigen eine Möglichkeit, die Teile zu kombinieren.
| Datei | Zweck |
|---|---|
devcontainer.json | Volume-Mounts, runArgs-Fähigkeiten, VS Code-Erweiterungen und containerEnv |
Dockerfile | Basis-Image, Entwicklungstools und die Claude Code-Installation |
init-firewall.sh | Blockiert den gesamten ausgehenden Netzwerkverkehr außer den zulässigen Domains |
Nächste Schritte
Sobald Claude Code in Ihrem Entwicklungscontainer ausgeführt wird, behandeln die folgenden Seiten den Rest eines Organisations-Rollouts: Auswahl eines Authentifizierungswegs, Lieferung verwalteter Richtlinien außerhalb des Repositories, Überwachung der Nutzung und Verständnis dessen, was Claude Code speichert und sendet.- Richten Sie Claude Code für Ihre Organisation ein: Wählen Sie einen Authentifizierungsanbieter, entscheiden Sie, wie Richtlinien Geräte erreichen, und planen Sie den Rollout
- Server-verwaltete Einstellungen: Liefern Sie verwaltete Richtlinien aus der Claude.ai-Admin-Konsole, damit Ingenieure sie nicht umgehen können, indem sie Repository-Dateien bearbeiten
- Überwachen Sie die Nutzung und überprüfen Sie die Aktivität: Exportieren Sie OpenTelemetry-Metriken und überprüfen Sie, was Ihr Team ausführt
- Netzwerkzugriffsanforderungen: Die vollständige Domain-Allowlist für Proxys und Firewalls
- Telemetrie-Dienste und Opt-out: Was Claude Code standardmäßig sendet und die Umgebungsvariablen, die es deaktivieren
- Erkunden Sie das
.claude-Verzeichnis: Was die Volume-Einbindung enthält, einschließlich Anmeldedaten, Einstellungen und Sitzungsverlauf - Sicherheitsmodell: Wie Claude Codes Berechtigungssystem, Sandboxing und Prompt-Injection-Schutz zusammenpassen
- Berechtigungsmodi: Die vollständige Spanne von Plan-Modus bis Auto-Modus bis Bypass, und wann man jeden verwendet