Vai al contenuto principale

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.

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:
Sebbene il dev container fornisca protezioni sostanziali, nessun sistema è completamente immune da tutti gli attacchi. Quando eseguito con --dangerously-skip-permissions, i dev container non impediscono a un progetto dannoso di estrarre qualsiasi cosa accessibile all’interno del contenitore, incluse le credenziali di Claude Code archiviate in ~/.claude. Utilizza i dev container solo quando sviluppi con repository affidabili e monitora le attività di Claude. Evita di montare segreti host come ~/.ssh o file di credenziali cloud nel contenitore; preferisci token con ambito repository o di breve durata.
Diagramma che mostra un editor sull'host che si connette a un dev container Docker. Claude Code, il terminale e gli strumenti di build vengono eseguiti all'interno del contenitore. Il repository host è bind-montato nel contenitore come workspace.Un dev container viene eseguito come contenitore Docker, sia sulla tua macchina che su un host cloud come GitHub Codespaces. Un editor che supporta la specifica Dev Containers, come VS Code, GitHub Codespaces, un IDE JetBrains o Cursor, si connette a quel contenitore: navighi e modifichi i file nell’editor come al solito, ma il terminale integrato, i language server e gli strumenti di build vengono tutti eseguiti all’interno del contenitore piuttosto che sul tuo host. Gli editor senza supporto per dev container, come Vim semplice, non fanno parte di questo flusso di lavoro.Claude Code viene eseguito all’interno del contenitore, quindi vede gli stessi file, dipendenze e strumenti del resto della toolchain del tuo progetto. In VS Code puoi utilizzare il pannello dell’estensione Claude Code o eseguire 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.
Nuovo ai dev container? Il tutorial VS Code Dev Containers ti guida attraverso l’installazione di Docker, l’estensione e l’apertura del tuo primo contenitore. Per un esempio più completo e hardened con un firewall e volumi persistenti, vedi Prova il contenitore di riferimento.
1

Crea o aggiorna devcontainer.json

Salva quanto segue come .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": "mcr.microsoft.com/devcontainers/base:ubuntu",
  "features": {
    "ghcr.io/anthropics/devcontainer-features/claude-code:1.0": {}
  }
}
Sostituisci la riga image con l’immagine base del tuo progetto o rimuovila se il tuo file esistente utilizza un Dockerfile.
2

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.
3

Accedi a Claude Code

Apri un terminale nel contenitore ricostruito ed esegui claude, quindi segui il prompt di autenticazione.
Quello che vedi al prompt di autenticazione dipende dal tuo provider: Per i provider cloud, passa le credenziali nel contenitore come variabili di ambiente tramite 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
"mounts": [
  "source=claude-code-config,target=/home/node/.claude,type=volume"
]
Sostituisci /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
RUN mkdir -p /etc/claude-code
COPY managed-settings.json /etc/claude-code/managed-settings.json
Poiché il Dockerfile risiede nel repository, chiunque abbia accesso in scrittura può modificare o rimuovere questo passaggio. Per la politica che gli ingegneri non possono aggirare modificando i file del repository, fornisci le impostazioni gestite tramite impostazioni gestite dal server o il tuo MDM. Vedi file di impostazioni gestite per le chiavi disponibili e gli altri percorsi di consegna. Per impostare variabili di ambiente che si applicano a ogni sessione di Claude Code nel contenitore, aggiungile a 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
"containerEnv": {
  "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
  "DISABLE_AUTOUPDATER": "1"
}
La Dev Container Feature installa sempre l’ultima versione di Claude Code. Per fissare una versione specifica di Claude Code per build riproducibili, installala dal tuo Dockerfile con 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 script init-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 repository anthropics/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.
1

Installa i prerequisiti

Installa VS Code e l’estensione Dev Containers.
2

Clona il riferimento

Clona il repository Claude Code e aprilo in VS Code.
3

Riapri nel contenitore

Quando richiesto, fai clic su Reopen in Container, o esegui Dev Containers: Reopen in Container dal Command Palette.
4

Avvia Claude Code

Una volta che il contenitore finisce di costruire, apri un terminale con Ctrl+` ed esegui claude per accedere e avviare la tua prima sessione.
Per utilizzare questa configurazione con il tuo progetto, copia la directory .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.
FileScopo
devcontainer.jsonMount dei volumi, capacità runArgs, estensioni VS Code e containerEnv
DockerfileImmagine base, strumenti di sviluppo e l’installazione di Claude Code
init-firewall.shBlocca 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.