Integrare Docker in Visual Studio Code

Prerequisiti
- Docker Desktop installato e in esecuzione oppure un demone Docker raggiungibile (remote daemon o WSL2).
- Visual Studio Code installato.
- Conoscenza base di terminale e Node.js se vuoi seguire l’esempio pratico.
Importante: se usi WSL2 su Windows, assicurati che l’integrazione con Docker sia attivata nelle impostazioni di Docker Desktop.
Installare l’estensione Docker in VS Code
Apri la vista Estensioni in Visual Studio Code, cerca “Docker” e installa l’estensione ufficiale Microsoft Docker.

Al termine dell’installazione, nella barra laterale sinistra apparirà l’icona Docker/Containers che apre il Docker Explorer.

Collegare Docker Desktop a VS Code
Quando Docker Desktop è in esecuzione, l’estensione Docker si connette automaticamente al demone locale. Non serve configurazione aggiuntiva nella maggior parte dei casi.
Per verificare la connessione, clicca sull’icona Docker/Containers per aprire il Docker Explorer. Da qui puoi vedere container in esecuzione e arrestati, immagini, registri, volumi e reti.

Nota: se usi un host Docker remoto, configura il contesto Docker (Docker contexts) o imposta la variabile DOCKER_HOST. Se usi WSL, assicurati che VS Code usi la stessa distribuzione collegata a Docker.
Gestire container, immagini e volumi da VS Code
Con l’integrazione attiva puoi eseguire molte operazioni con il tasto destro sulle risorse nel Docker Explorer: avviare, fermare, riavviare, rimuovere container, costruire immagini, eseguire il pull di immagini e gestire volumi.

Esempi comuni:
- Avviare/fermare un container: tasto destro sul container → Start / Stop.
- Rimuovere un’immagine inutilizzata: tasto destro sull’immagine → Remove.
- Ispezionare un volume: tasto destro sul volume → Inspect.



Puoi anche esplorare reti, registri e contesti Docker, e accedere alla sezione Aiuto e feedback dall’estensione.
Costruire ed eseguire un’app containerizzata in VS Code
Qui vediamo un esempio pratico con una piccola app Node.js Express.
Crea una cartella di progetto e dentro un file index.js con questo contenuto:
const express = require("express");
const server = express();
const PORT = 4000;
server.get("/", (req, res) => {
res.send("Welcome to our Express app!");
});
server.listen(PORT, () => {
console.log(`App running on port ${PORT}`);
});Questo è un server Express minimale che risponde sulla porta 4000.
Generare i file Docker automaticamente
L’estensione può generare Dockerfile e file correlati per te. Apri la Command Palette (⇧⌘P su Mac o Ctrl+Shift+P su Windows) e avvia il comando Add Docker files to Workspace.

Seleziona Node.js come piattaforma dell’applicazione.

Scegli il file package.json presente nella root del progetto; l’estensione lo usa per impostare la build e il comando di avvio.

Specificare la porta che l’app espone (es. 4000) e rispondere Sì se vuoi includere un file Docker Compose.
L’estensione genererà un Dockerfile, .dockerignore e opzionalmente compose.yaml.

Costruire l’immagine e avviarla
Per costruire l’immagine, fai clic destro sul Dockerfile e scegli Build Image oppure usa il comando Docker Images: Build Image dalla Command Palette.

Una volta costruita, troverai l’immagine nella sezione Images del Docker Explorer.

Esegui l’immagine tramite tasto destro → Run o usando il comando container images: run dalla Command Palette.

Scegli l’ultima immagine creata dalla lista e verifica che appaia nella sezione Containers.


Per aprire l’app in un browser, clic destro sul container in esecuzione e scegli Open in Browser.

Dalla console dell’estensione vedrai i log e conferme dell’avvio del container.

Checklist rapida per lo sviluppo con Docker su VS Code
Developer:
- Avere Docker Desktop o demone Docker accessibile.
- Avere Node.js e package.json corretti.
- Generare Dockerfile dall’estensione o scriverlo manualmente.
- Costruire l’immagine e testare localmente.
Ops/DevOps:
- Verificare policy di rete e porte esposte.
- Configurare registri (privati o pubblici).
- Monitorare volumi e cleanup di immagini non usate.
Sicurezza:
- Evitare mount di file sensibili direttamente nei container.
- Ridurre privilegi dei container (non eseguire come root se possibile).
Alternative e approcci correlati
- Docker CLI: per flussi di lavoro scriptati e CI/CD preferisci i comandi
docker build,docker run,docker-compose. - DevContainers: se vuoi uno sviluppo in container persistente e riproducibile, usa Remote - Containers / Dev Containers di VS Code.
- Docker Compose: per più servizi, genera
docker-compose.ymle gestisci stack multi-container. - GitHub Codespaces o Gitpod: sviluppo remoto con container preconfigurati.
Casi in cui l’integrazione potrebbe fallire e come risolvere
Quando può fallire:
- Docker Desktop non avviato o demone non raggiungibile.
- Permessi insufficienti per accedere al socket Docker.
- Conflitti di porta tra host e container.
- Incompatibilità tra WSL distro e Docker Desktop.
Controlli rapidi:
- Esegui
docker versionnel terminale per verificare connettività. - Controlla i log di Docker Desktop.
- Se usi WSL, assicurati che VS Code apra la stessa distribuzione che Docker Desktop usa.
Mini playbook: debug veloce
- Verifica che Docker sia attivo:
docker ps. - Se non risponde, riavvia Docker Desktop.
- Controlla che l’estensione Docker mostri risorse; se vuota, prova a cambiare il contesto Docker (Command Palette → Docker: Switch Context).
- Controlla i log del container con tasto destro → View Logs.
- Per problemi di build, esegui la build manuale in terminale:
docker build -t myapp .. - Per testare la porta:
docker run -p 4000:4000 myappe apri http://localhost:4000.
Incident runbook e rollback rapido
Se un container aggiornato causa problemi in produzione locale:
- Fermare il container problematico:
docker stop. - Riavviare la versione precedente dall’immagine taggata:
docker run -d --name myapp-rollback -p 4000:4000 myapp:previous. - Pulire risorse temporanee e controllare i log per la causa.
Sicurezza e note sulla privacy
- Evita di montare cartelle con dati sensibili nei container usati per sviluppo.
- Non memorizzare credenziali in immagini o Dockerfile; usa variabili d’ambiente o secret manager.
- Per ambienti condivisi, limita i permessi e usa registri privati con autenticazione.
Nota GDPR: se i container trattano dati personali, applica le stesse misure di protezione usate in produzione (cifratura, controllo accessi, audit).
Scorciatoie e cheat sheet
VS Code
- Aprire Command Palette: ⇧⌘P (Mac) / Ctrl+Shift+P (Windows)
- Aprire Docker Explorer: icona Docker nella barra laterale
Docker CLI
- Costruire immagine:
docker build -t nome:tag . - Eseguire immagine:
docker run -d -p hostPort:containerPort nome:tag - Vedere i container:
docker ps -a - Rimuovere un’immagine:
docker rmi
Modelli mentali utili
- Tratta l’immagine come un imballaggio immutabile del tuo runtime; i container sono istanze eseguite di quell’immagine.
- Mantieni i Dockerfile orientati alla riproducibilità: dichiarativi, con layer chiari e
.dockerignoreper escludere file non necessari.
Glossario rapido (1 riga ciascuno)
- Immagine: snapshot immutabile dei file e della configurazione per creare container.
- Container: istanza in esecuzione di un’immagine.
- Dockerfile: file di istruzioni per costruire un’immagine.
- Docker Compose: strumento per definire e gestire applicazioni multi-container.
Riepilogo
Integrare Docker in Visual Studio Code semplifica lo sviluppo containerizzato: puoi generare Dockerfile, costruire immagini, eseguire e debuggare container senza lasciare l’editor. Per flussi più avanzati valuta DevContainers, Docker CLI o soluzioni remote. Segui le checklist e le pratiche di sicurezza indicate per mantenere un ambiente di sviluppo pulito e riproducibile.
Importante: testa sempre le immagini localmente e non inserire credenziali nei Dockerfile.
Azione consigliata
Prova a creare il progetto di esempio, genera i Dockerfile con l’estensione e confronta la procedura con una build manuale via CLI per capire quale flusso si adatta meglio al tuo team.