Un contenitore di sviluppo, o dev container, ti consente di definire un ambiente identico e isolato che ogni ingegnere del tuo team può eseguire. Con Claude Code installato in quel contenitore, i comandi che Claude esegue vengono eseguiti al suo interno piuttosto che sulla macchina host, mentre le modifiche ai file del tuo progetto vengono visualizzate nel tuo repository locale mentre lavori. Questa pagina copre l’installazione di Claude Code in un dev container e gli argomenti di configurazione che seguono. Ogni argomento è autonomo, quindi passa a quelli che corrispondono a ciò che devi configurare: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.
- Mantieni l’autenticazione e le impostazioni tra i rebuild
- Applica la politica organizzativa
- Limita l’uscita di rete
- Esegui senza prompt di autorizzazione
Come i dev container funzionano con il tuo editor
Come i dev container funzionano con il tuo editor
claude nel terminale integrato; entrambi vengono eseguiti all’interno del contenitore e condividono la stessa configurazione ~/.claude.Aggiungi Claude Code al tuo dev container
Claude Code si installa in qualsiasi dev container tramite la Claude Code Dev Container Feature. Le impostazioni funzionano con qualsiasi strumento che supporti la specifica Dev Containers, come VS Code, GitHub Codespaces o IDE JetBrains. I passaggi seguenti utilizzano VS Code come esempio. Quando apri il contenitore in VS Code o Codespaces, la feature aggiunge anche l’estensione Claude Code VS Code; altri editor ignorano quella parte.Crea o aggiorna devcontainer.json
Salva quanto segue come Sostituisci la riga
.devcontainer/devcontainer.json nel tuo repository, o aggiungi il blocco features al tuo file esistente.Il tag della versione alla fine, come :1.0, fissa lo script di installazione della feature, non la versione di Claude Code. La feature installa l’ultimo Claude Code, e Claude Code si auto-aggiorna automaticamente all’interno del contenitore per impostazione predefinita.Per fissare la versione CLI o disabilitare l’auto-aggiornamento, vedi Applica la politica organizzativa..devcontainer/devcontainer.json
image con l’immagine base del tuo progetto o rimuovila se il tuo file esistente utilizza un Dockerfile.Ricostruisci il contenitore
Apri il Command Palette di VS Code con
Cmd+Shift+P su Mac o Ctrl+Shift+P su Windows e Linux, ed esegui Dev Containers: Rebuild Container.Per altri strumenti, segui l’azione di rebuild di quello strumento: vedi ricostruzione in GitHub Codespaces, la CLI Dev Containers, o la documentazione dev container del tuo IDE.- Anthropic: accedi tramite browser con il tuo account Claude o Anthropic Console
- Amazon Bedrock, Google Vertex AI o Microsoft Foundry: Claude Code utilizza le tue credenziali del provider cloud, senza prompt del browser
containerEnv, un segreto di Codespaces, o l’identità del carico di lavoro del tuo cloud piuttosto che montare file di credenziali dall’host. Vedi Amazon Bedrock, Google Vertex AI, o Microsoft Foundry per la catena di credenziali che Claude Code legge.
Vedi Scegli il tuo provider API per decidere quale percorso si adatta alla tua organizzazione.
Se l’accesso al browser si completa ma il callback non raggiunge mai il contenitore, copia il codice mostrato nel browser e incollalo al prompt
Paste code here if prompted nel terminale. Questo può accadere quando l’inoltro delle porte dell’editor non instrada il callback localhost.Mantieni l’autenticazione e le impostazioni tra i rebuild
Per impostazione predefinita, la directory home del contenitore viene scartata al rebuild, quindi gli ingegneri devono accedere di nuovo ogni volta. Claude Code archivia il suo token di autenticazione, le impostazioni utente e la cronologia della sessione in~/.claude. Monta un volume denominato in quel percorso per mantenere questo stato tra i rebuild.
L’esempio seguente monta un volume nella directory home dell’utente node:
devcontainer.json
/home/node con la directory home del remoteUser del tuo contenitore. Se monti il volume in un luogo diverso da ~/.claude, imposta CLAUDE_CONFIG_DIR al percorso di montaggio in modo che Claude Code legga e scriva lì.
Per isolare lo stato per progetto piuttosto che condividere un volume su tutti i repository, includi la variabile ${devcontainerId} nel nome della sorgente. La configurazione di riferimento utilizza source=claude-code-config-${devcontainerId} per questo scopo.
In GitHub Codespaces, ~/.claude persiste tra l’arresto e l’avvio di un codespace, ma viene comunque cancellato quando ricostruisci il contenitore, quindi il mount del volume sopra si applica anche lì. Per portare l’autenticazione tra i codespace, archivia ANTHROPIC_API_KEY o un CLAUDE_CODE_OAUTH_TOKEN da claude setup-token come segreto di Codespaces; Codespaces rende i segreti disponibili come variabili di ambiente all’interno del contenitore automaticamente.
Applica la politica organizzativa
Un dev container è un luogo conveniente per applicare la politica organizzativa, perché la stessa immagine e configurazione vengono eseguite sulla macchina di ogni ingegnere. Claude Code legge/etc/claude-code/managed-settings.json su Linux e lo applica con la massima precedenza nella gerarchia delle impostazioni, quindi i valori lì sovrascrivono qualsiasi cosa un ingegnere imposti in ~/.claude o nella directory .claude/ del progetto. Copia il file in posizione dal tuo Dockerfile:
Dockerfile
containerEnv nel tuo devcontainer.json. L’esempio seguente disattiva la telemetria e la segnalazione degli errori e impedisce a Claude Code di auto-aggiornarsi dopo l’installazione:
devcontainer.json
npm install -g @anthropic-ai/claude-code@X.Y.Z invece di utilizzare la feature, e imposta DISABLE_AUTOUPDATER come mostrato sopra.
Per l’elenco completo dei controlli di politica incluse le regole di autorizzazione, le restrizioni degli strumenti e gli allowlist dei server MCP, vedi Configura Claude Code per la tua organizzazione.
Per rendere disponibili i server MCP all’interno del contenitore, definiscili a ambito di progetto in un file .mcp.json alla radice del repository in modo che siano archiviati insieme alla configurazione del tuo dev container. Installa tutti i binari su cui i server stdio locali dipendono nel tuo Dockerfile, e aggiungi i domini dei server remoti al tuo allowlist di rete.
Limita l’uscita di rete
Puoi limitare il traffico in uscita del contenitore solo ai domini di cui Claude Code ha bisogno. Vedi Requisiti di accesso alla rete per i domini di inferenza e autenticazione, e Servizi di telemetria per le connessioni opzionali di telemetria e segnalazione degli errori e come disabilitarle. Il contenitore di riferimento include uno scriptinit-firewall.sh che blocca tutto il traffico in uscita tranne i domini di cui Claude Code e i tuoi strumenti di sviluppo hanno bisogno. L’esecuzione di un firewall all’interno di un contenitore richiede autorizzazioni extra, quindi il riferimento aggiunge le capacità NET_ADMIN e NET_RAW tramite runArgs. Lo script del firewall e queste capacità non sono richiesti per Claude Code stesso: puoi lasciarli fuori e affidarti ai tuoi controlli di rete.
Esegui senza prompt di autorizzazione
Poiché il contenitore esegue Claude Code come utente non-root e confina l’esecuzione dei comandi al contenitore, puoi passare--dangerously-skip-permissions per l’operazione automatica. La CLI rifiuta questo flag quando lanciato come root, quindi conferma che remoteUser è impostato su un account non-root.
Saltare i prompt di autorizzazione rimuove la tua opportunità di rivedere le chiamate degli strumenti prima che vengono eseguite. Claude può comunque modificare qualsiasi file nel workspace bind-montato, che appare direttamente sul tuo host, e raggiungere qualsiasi cosa la politica di rete del contenitore consente. Abbina questo flag alle restrizioni di uscita di rete sopra per limitare ciò che una sessione bypassata può raggiungere.
Se desideri meno prompt senza disabilitare i controlli di sicurezza, considera invece la modalità auto, che ha un classificatore che rivede le azioni prima che vengono eseguite. Per impedire agli ingegneri di utilizzare --dangerously-skip-permissions del tutto, imposta permissions.disableBypassPermissionsMode su "disable" nelle impostazioni gestite.
Prova il contenitore di riferimento
Il repositoryanthropics/claude-code include un esempio di dev container che combina la CLI, il firewall di uscita, i volumi persistenti e una shell basata su Zsh. È fornito come esempio funzionante piuttosto che come immagine base mantenuta; usalo per vedere come i pezzi si incastrano insieme prima di applicarli alla tua configurazione.
Installa i prerequisiti
Installa VS Code e l’estensione Dev Containers.
Clona il riferimento
Clona il repository Claude Code e aprilo in VS Code.
Riapri nel contenitore
Quando richiesto, fai clic su Reopen in Container, o esegui Dev Containers: Reopen in Container dal Command Palette.
.devcontainer/ nel tuo repository e adatta il Dockerfile per la tua toolchain, o torna a Aggiungi Claude Code al tuo dev container per aggiungere solo la feature a una configurazione che hai già.
La configurazione di riferimento è composta da tre file. Nessuno di loro è richiesto quando aggiungi Claude Code al tuo dev container tramite la feature, ma mostrano un modo per combinare i pezzi.
| File | Scopo |
|---|---|
devcontainer.json | Mount dei volumi, capacità runArgs, estensioni VS Code e containerEnv |
Dockerfile | Immagine base, strumenti di sviluppo e l’installazione di Claude Code |
init-firewall.sh | Blocca tutto il traffico di rete in uscita tranne i domini consentiti |
Passaggi successivi
Una volta che Claude Code è in esecuzione nel tuo dev container, le pagine seguenti coprono il resto di un rollout organizzativo: scegliere un percorso di autenticazione, fornire politica gestita al di fuori del repository, monitorare l’utilizzo e comprendere cosa Claude Code archivia e invia.- Configura Claude Code per la tua organizzazione: scegli un provider di autenticazione, decidi come la politica raggiunge i dispositivi e pianifica il rollout
- Impostazioni gestite dal server: fornisci politica gestita dalla console admin di Claude.ai in modo che gli ingegneri non possano aggirarla modificando i file del repository
- Monitora l’utilizzo e l’attività di audit: esporta metriche OpenTelemetry e rivedi cosa il tuo team sta eseguendo
- Requisiti di accesso alla rete: l’elenco completo dei domini per proxy e firewall
- Servizi di telemetria e opt-out: cosa Claude Code invia per impostazione predefinita e le variabili di ambiente che lo disabilitano
- Esplora la directory
.claude: cosa contiene il mount del volume, incluse credenziali, impostazioni e cronologia della sessione - Modello di sicurezza: come il sistema di autorizzazione di Claude Code, il sandboxing e le protezioni dall’iniezione di prompt si incastrano insieme
- Modalità di autorizzazione: l’intera gamma dalla modalità piano alla modalità auto al bypass, e quando utilizzare ciascuna