- WSL2 offre il kernel Linux nativo in Windows e grandi prestazioni per Docker.
- VS Code e Dev Containers garantiscono ambienti riproducibili e portatili.
- Installa Docker Desktop o il motore nativo su WSL2 in base alle tue policy.
- Produttività: ZSH, FZF e Tmux, oltre alla risoluzione dei problemi di WSL2/Docker.
Se lavori su Windows e desideri un ambiente di sviluppo solido con Linux, container e un editor moderno, WSL2, Docker e VS Code formano un trio vincenteQuesta combinazione consente di programmare su Linux senza uscire da Windows, di eseguire rapidamente i container e di eseguire il debug dei progetti comodamente, tutto sulla stessa macchina.
L'idea è semplice: Sfrutta il kernel Linux WSL2, aggiungi Docker (tramite Docker Desktop o installando il motore nativo sulla distribuzione) e termina con Contenitori VS Code e Dev per ottenere ambienti riproducibili. Nelle sezioni seguenti vedrai passo dopo passo come impostarlo, con Consigli pratici, scorciatoie, casi reali e soluzioni a problemi tipici.
Contenitori e perché si adattano a WSL2 + VS Code
Docker ti consente di confezionare applicazioni con tutto ciò di cui hai bisogno esegui lo stesso su qualsiasi macchinaA differenza di una VM tradizionale, i contenitori condividono il kernel host, Si avviano più velocemente e consumano menoInoltre, facilitano la disponibilità continua: si carica una nuova versione del contenitore e si sostituisce l'intero sistema senza interruzioni.
Con WSL2, Windows viene fornito con un vero kernel Linux integrato. Grazie a questo, I contenitori Linux vengono eseguiti in modo nativo sul tuo computer e se usi Docker Desktop con il backend WSL 2 puoi eseguire container Linux e Windows fianco a fianco. Questo combina prestazioni, compatibilità e flusso di lavoro unificato.
Requisiti di sistema e preparazione
Innanzitutto, è una buona idea verificare che Windows soddisfi i requisiti per WSL2 e Docker Desktop. Controlla le versioni e le build di Windows (Win + R, digita "winver") e tieni presente che Docker Desktop ha requisiti di sistema e di licenza specifici (gratuito per uso personale e piccole imprese).
Per installare WSL2 utilizzando il metodo semplificato, aprire PowerShell o CMD con permessi ed esegue wsl --install
Questo comando abilita i componenti necessari, installa il kernel Linux, imposta WSL 2 come predefinito e scarica Ubuntu per impostazione predefinita. Riavviare quando richiesto.
Dopo l'installazione, apri la distribuzione (Ubuntu se non l'hai cambiata) e crea il tuo Nome utente e password LinuxRicorda che mentre digiti la password non vedrai alcun carattere: è normale. Questo account sarà quello predefinito e potrà essere eseguito sudo per compiti amministrativi.
Mantieni la distribuzione aggiornata con sudo apt update && sudo apt upgrade
Windows non aggiorna automaticamente la distribuzione, quindi decidi tu quandoSe vuoi aggiungere altre distribuzioni, puoi farlo da Microsoft Store o importando immagini.
Terminale, archiviazione ed editor: prime decisioni
installare finestre terminal per un'esperienza moderna con schede, pannelli e temi. Gestisce più linee di comandi in modo semplice e personalizzabile a tuo piacimento. Ogni volta che aggiungi una distribuzione WSL, il profilo corrispondente apparirà nel terminale.
Quando si tratta di file di progetto, le prestazioni sono fondamentali: Se si utilizzano strumenti Linux, salvare i progetti nel file system WSL2. (per esempio, \\wsl$\Ubuntu-22.04\home\tuusuario\proyecto
). È possibile accedervi da entrambi i lati, ma Lavorare in /mnt/c con gli strumenti Linux potrebbe essere più lento.
Per aprire la cartella WSL corrente in Explorer, eseguire explorer.exe .
(include il punto). E per aprire la cartella in VS Code da WSL, usa code .
Con l'estensione corretta, VS Code si connette al server di estensione all'interno di WSL e ti dimentichi di percorsi strani e problemi binari.
Installa Docker Desktop con il backend WSL 2
Un metodo molto comodo è usare Docker Desktop. Scaricalo, installalo e attivalo. «Utilizza il motore basato su WSL 2» in Impostazioni > Generali. Quindi, in Impostazioni > Risorse > Integrazione WSL, scegli le distribuzioni WSL2 dove vuoi abilitare l'integrazione.
Verifica l'installazione dalla tua distribuzione con docker --version
e prova con docker run hello-world
Se tutto va bene, avrai contenitori Linux in esecuzione sul kernel WSL2 e gestito da Docker Desktop e Windows.
Docker Desktop crea due distribuzioni WSL speciali per immagazzinamento e servizio: docker-desktop
y docker-desktop-data
. Vedrai anche i loro percorsi come \\wsl$\docker-desktop
y \\wsl$\docker-desktop-data
Se hai bisogno di individuare i tuoi dati da Windows, puoi aprire una shell WSL ed eseguire explorer.exe .
, oppure vai a \\wsl\<Distro>\mnt\wsl
.
Se vieni da un Vecchia anteprima di Docker per WSL, potrebbe esserci un contesto deprecato chiamato "wsl". Controllalo con docker context ls
; se appare, rimuovilo con docker context rm wsl
Per evitare errori come "open \\.\/pipe\/docker_wsl". Nell'integrazione corrente dovresti usare contesto predefinito.
Sviluppo in contenitori remoti con VS Code
Per lavorare comodamente con i contenitori, installa le estensioni in VS Code WSL, Contenitori di sviluppo y dockerCon loro, sarai in grado di aprire il tuo progetto WSL in VS Code e anche riaprire la cartella all'interno di un contenitore di sviluppo con tutta la pila pronta.
Esempio pratico (Django). Dal terminale WSL, clona un repository, ad esempio un repository Django "Hello World": git clone https://github.com/mattwojo/helloworld-django.git
, entra con cd helloworld-django
e apri VS Code con code .
Controllare l'indicatore verde della connessione remota WSL nell'angolo in basso a sinistra.
Apri la tavolozza (CTRL + MAIUSC + P) e scegli “Contenitori di sviluppo: riapri in contenitore” (o "Apri cartella nel contenitore..." se si proviene da Windows utilizzando \\wsl$
). Seleziona una definizione appropriata (ad esempio Python 3 per Django). VS Code genererà una cartella .devcontainer
con Dockerfile
y devcontainer.json
, costruirà l'immagine e solleverà il contenitore di sviluppo.
Aprire il terminale integrato ed eseguire uname
per confermare che sei su Linux e python3 --version
per vedere la versione Python del contenitore. Per eseguire il debug, vai alla vista Esegui e Debug, creare il file launch.json
scegliendo la configurazione del framework (Django in questo caso) e premere F5. Apri l'URL che ti dice il terminale (ad esempio, http://127.0.0.1:8000
).
Contenitori di sviluppo e spazi di codice: ambienti riproducibili
Un contenitore Dev è definito con .devcontainer/devcontainer.json
e, facoltativamente, a Dockerfile
Questo approccio consente utilizzare immagini di base o altre immagini personalizzate, preinstallare le dipendenze, configurare le estensioni di VS Code e automatizzare i comandi di post-configurazione.
Tra i casi d'uso più comuni ci sono quelli di Scienza dei dati collaborativa (con Python, Jupyter, pandas, seaborn e un insieme omogeneo di dipendenze) e quelli di Backend Node.js con PostgreSQL coordinato con docker-compose.yml
In questo modo, l'intero team lavora con lo stesso ambiente, nessuna sorpresa dovuta alle differenze locali.
La stessa cartella .devcontainer
Funziona nel cloud con GitHub Codespaces: quando crei un Codespace, GitHub crea automaticamente l'ambiente. Questo promuove passaggio senza attriti tra locale e cloud, riproducibilità e rapida integrazione di nuovi collaboratori.
Buone pratiche: considerare le immagini di base ufficiali devcontainers/
, versione della cartella .devcontainer
, utilizza postCreateCommand
per automatizzare installazioni e combinate devcontainer.json
con docker-compose.yml
quando hai bisogno di più servizi.
Alternativa: Docker senza Docker Desktop (motore nativo in WSL2)
Se preferisci evitare Docker Desktop (a causa della politica aziendale o di una scelta personale), puoi installare Motore Docker direttamente sulla tua distribuzione WSL2Aggiungi la chiave GPG, il repository ufficiale e i pacchetti (su Ubuntu):
Segui questi comandi per aggiungere la chiave e il repository: # Clave oficial y repositorio
sudo apt-get update
sudo apt-get install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https:\/\/download.docker.com\/linux\/ubuntu\/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo «deb [arch=$(dpkg –print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https:\/\/download.docker.com\/linux\/ubuntu \n$(. \/etc\/os-release && echo «$VERSION_CODENAME») stable» |
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Aggiungi il tuo utente al gruppo Docker per utilizzare la CLI senza sudo: sudo usermod -aG docker $USER
. Chiudere e riaprire WSL. Verificare con docker run hello-world
Per l'avvio automatico puoi usare /etc/wsl.conf
con [boot]
y command = service docker start
o systemd se già abilitato sul tuo WSL2 (sulle versioni recenti).
Rete e porte: da Windows è possibile accedere ai contenitori pubblicati in localhost
Grazie a WSL2. Se hai bisogno di esporre i servizi WSL2 alla tua rete locale (ad esempio, accesso da dispositivi mobili), Utilizzare un proxy di porta su Windows con Netsh e crea la regola firewall corrispondente. A copione Il tipico PowerShell ottiene l'IP WSL, configura portproxy
e aggiungi la regola; in questo modo eviterai di ripetere i comandi dopo i riavvii.
Perché scegliere questa strada? Eviti di dipendere dalle licenze o dalle policy di Docker Desktop e controlli ogni aspetto. Come complemento, puoi distribuire vettore Per gestire i contenitori con l'interfaccia web: creare un volume e avviare il contenitore con le porte 8000 e 9443; accedere https://localhost:9443 (accetta il certificato), crea l'utente amministratore e Gestisci il tuo Docker con i clic.
Git, SSH e dove clonare il codice
In WSL2 puoi clonare con Git nella tua directory Casa Linux e lavorare con VS Code. Questa è solitamente l'opzione più comoda: migliori prestazioni e meno attritoSe preferisci clonare da un contenitore, dovrai gestire credenziali e chiavi. SSH all'interno del contenitore o montare il tuo ~/.ssh
accuratamente.
GUI per Git? Strumenti come Sublime Merge o GitKraken possono funzionare in questo scenario. GitKraken può anche apri dal terminale WSL e visualizza su Windows, avendo accesso ai file WSL. Per SSH con GitLab o altri remoti, imposta le tue chiavi in WSL e controlla i permessi e gli agenti SSH prima di clonare tramite SSH.
Ricorda il consiglio sulle prestazioni: evitare /mnt/c per il tuo codice se hai intenzione di compilare o utilizzare strumenti Linux intensivi. Usa \\wsl$
da Windows per accedere alla stessa cartella ogni volta che ne hai bisogno.
Produttività del terminale: ZSH, Oh My Zsh, Powerlevel10k, Antigen, FZF e Tmux
Per un terminale comodo e potente, installa zsh con sudo apt install zsh
e cambiarlo in predefinito con chsh -s $(which zsh)
Quindi installare Oh mio Zsh con il suo script ufficiale e conferirgli un aspetto e una funzionalità avanzati.
Il tema Livello di potenza 10k aggiunge un prompt altamente configurabile con integrazione Git e prestazioni eccellenti. Installalo dal suo repository, posizionalo ZSH_THEME="powerlevel10k/powerlevel10k"
en ~/.zshrc
e segui la procedura guidata per modificare i caratteri e l'aspetto. Vedrai il tuo repository, il ramo e altro ancora sullo stato guarda.
Con antigene Gestirai i plugin ZSH in modo dichiarativo. Pacchetti utili: zsh-autosuggestions
, un plugin per FZF, supporto zsh-npm-scripts-autocomplete
y zsh-z
per saltare tra le directory. Aggiungi NVM come plugin o ufficialmente per Versioni del nodo hot-switch.
Migliora il flusso con bat y fd da apt (bat
y fd-find
in Ubuntu) e configurare FZF per le ricerche: Ctrl + R
per la storia, Alt + C
per cartelle e Ctrl + T
per i file con anteprima a colori. Risparmio di tempo immediato Di giorno in giorno.
Per multiplexare il terminale, utilizzare tmux (sudo apt install tmux
) e il suo gestore di plugin TPMCon una configurazione adeguata avrai temi, recupero della sessione (resurrect/continuum), integrazione con la navigazione simile a Vim e scorciatoie per dividere i pannelli. Installa i plugin con Ctrl + Espacio
poi I
(i maiuscola) all'interno di Tmux.
Database, GPU e applicazioni grafiche
Il tuo progetto potrebbe aver bisogno di un database. Hai delle guide per MySQL, PostgreSQL, MongoDB, Redis, SQL Server o SQLite in esecuzione all'interno di WSL o come contenitori. Integrare i servizi in docker-compose.yml
y Ottieni il tuo Dev Container online a loro senza complicazioni.
Accelerazione GPU? WSL2 offre supporto per carichi di lavoro di apprendimento automatico utilizzando la GPU, con particolare attenzione a NVIDIA e CUDA. Sulle schede AMD/Intel ci sono percorsi alternativi; controlla la documentazione del produttore per abilitare l'accelerazione.
WSL2 consente di eseguire applicazioni GUI Linux su Windows. Per casi specifici, Puoi aprire editor Linux o strumenti grafici e verrà visualizzato nelle finestre di Windows. Se riscontri problemi, riavvia WSL2 con wsl --shutdown
di solito risolve il problema.
Interoperabilità e comandi utili
WSL e Windows si capiscono bene. Da PowerShell, esegui Comandi Linux con wsl
, ad esempio: wsl ls -la
Puoi anche mescolare: wsl ls -la | findstr "git"
o dir | wsl grep git
per filtrare tra i mondi.
Da Linux esegui gli strumenti di Windows aggiungendo .exe: notepad.exe .bashrc
. Altre combinazioni utili: ipconfig.exe | wsl grep IPv4 | wsl cut -d: -f2
per mantenere l'IP. Tutto scorre tra entrambi i sistemi.
Per montare unità esterne in WSL2, segui la guida al montaggio dei dischi. Sarai in grado di accedere USB o dischi aggiuntivi e lavorarci da Linux.
Rete, porte e localhost
Mappe WSL2 automaticamente le porte dell'ambiente Linux a localhost
in WindowsCioè, se pubblichi un -p 3000:3000
In Docker, puoi inserire http://localhost:3000
dal tuo browser su Windows senza fare altro.
Se si desidera esporre i servizi WSL2 alla LAN (un altro dispositivo sulla rete), è possibile utilizzare un Script di PowerShell che ottiene l'IP di WSL e invoca netsh interface portproxy
per inoltrare le porte, oltre a creare la regola del firewall con New-NetFirewallRule
. Questo automatizza la pubblicazione ed evitare di ripetere manualmente i passaggi dopo i riavvii.
Problemi comuni e come risolverli
Contesti Docker deprecati in WSL: se ne vedi uno denominato "wsl" ereditato da anteprime precedenti, eliminalo con docker context rm wsl
In questo modo eviterai errori come open \\.\/pipe\/docker_wsl
e tu resterai con esso contesto predefinito.
Dove Docker archivia i dati in WSL? Ricerca \\wsl$\docker-desktop
y \\wsl$\docker-desktop-data
, oppure apri la tua distribuzione e avvia explorer.exe .
per navigare. Hai anche \\wsl\<Distro>\mnt\wsl
per vedere lo spazio di archiviazione correlato.
Problemi con la finestra GUI avviata da WSL: a volte il applicazioni I modelli basati sugli elettroni mostrano artefatti. Riavviare WSL2 con wsl --shutdown
e riprova. Microsoft sta correggendo questi dettagli con il tempo.
Nessun systemd? Nelle iterazioni recenti, WSL2 può abilita systemd per impostazione predefinita; se questo non è il tuo caso, puoi iniziare i servizi con /etc/wsl.conf
e sezione [boot]
Controlla la tua versione e la documentazione se hai bisogno di servizi in background.
Hai eseguito l'aggiornamento da WSL1 a WSL2 e Docker non collabora: a volte ci sono resti di vecchie configurazioni come DOCKER_HOST=tcp://localhost:2375
Se si proviene da tale configurazione, disinstallare completamente Docker su Windows e WSL (pacchetti, percorsi e file di configurazione) e reinstallare Docker Desktop con il backend WSL 2. Verificare con wsl -l -v
che esistono docker-desktop
y docker-desktop-data
nella versione 2.
Se si utilizza il motore nativo in WSL2 senza Desktop ed esponendo il demone tramite TCP, ricordare che senza TLS non è sicuroQuesta configurazione è per ambienti di sviluppo locali, non di produzione. Assicurati di avere una buona gestione della tua rete e evitare porte aperte non necessarie.
Suggerimenti finali e buone pratiche
Nei progetti con docker-compose.yml
che presuppongono automazioni Docker Desktop (montaggi e alias di rete), regolano i percorsi assoluti se vedi volumi con ~
e aggiunge extra_hosts
con host.docker.internal:host-gateway
se il tuo stack lo richiede. Piccoli cambiamenti evitano sorprese.
Per VS Code, la combinazione WSL + Dev Containers + Docker ti consente lavorare all'interno del contenitore con le stesse estensioni e impostazioni dell'editor. È un modo per standardizzare l'ambiente tra i membri del team e ridurre il fattore "funziona sulla mia macchina".
Se preferisci un approccio senza Docker Desktop, il motore nativo di WSL2 offre un controllo granulare e, con Portainer, un'interfaccia di gestione leggera. Entrambe le rotte sono valide e dipenderà dalle tue esigenze, dalle licenze e dalle politiche interne.
Hai una mappa completa: Installa e configura WSL2, scegli tra Docker Desktop o motore nativo, lavora con Contenitori di sviluppo e codice VSuso database e GPU, e aumenta la tua produttività con un terminale ottimizzato e Tmux. La chiave è combinare questi elementi in base al tuo progetto e al tuo team per ottenere un ambiente riproducibile, veloce e confortevole Di giorno in giorno.
Scrittore appassionato del mondo dei byte e della tecnologia in generale. Adoro condividere le mie conoscenze attraverso la scrittura, ed è quello che farò in questo blog, mostrarti tutte le cose più interessanti su gadget, software, hardware, tendenze tecnologiche e altro ancora. Il mio obiettivo è aiutarti a navigare nel mondo digitale in modo semplice e divertente.