Con l'introduzione del Windows Subsystem for Linux (WSL), Microsoft ha dato la possibilità agli sviluppatori di eseguire un ambiente GNU/Linux direttamente su Windows, senza modifiche, senza l'overhead di una macchina virtuale. Si tratta di un'ottima soluzione perché molti sviluppatori utilizzano un sistema per la programmazione e un altro per l'intrattenimento.
Il WSL è ancora in fase di sviluppo, ma al momento è adatto per i moderni sviluppo softwaresia nella prima che nella seconda versione. Sfogliando i problemi e le domande riportate su Internet, la maggior parte di essi sembra riguardare l'integrazione di WSL con Docker, soprattutto quando si tratta di passare da WSL 1 a WSL 2.
Questo articolo dissiperà tutte le ambiguità e vi aiuterà a superare questo processo in modo indolore. Se non avete WSL 1 e volete avere WSL 2 con Docker, potete passare direttamente all'ultimo capitolo.
Che cosa otterrete?
- Il vero kernel Linux stabile più recente (messo a punto da Microsoft). WSL 1 dispone di un'interfaccia kernel compatibile con Linux senza il kernel Linux codice.
- Aumento delle prestazioni di I/O dei file. Fino a 20 volte più veloce rispetto a WSL 1 quando si scompatta una tarball zippata, circa 2-5 volte più veloce quando si usa clone git
, installare npm
e cmake
su vari progetti.
- Compatibilità completa con le chiamate di sistema. I binari Linux utilizzano le chiamate di sistema per eseguire molte funzioni, come l'accesso ai file, la richiesta di memoria, la creazione di processi e molto altro. Mentre WSL 1 utilizzava un livello di traduzione costruito dal programma WSL squadraWSL 2 include il proprio kernel Linux con piena compatibilità con le chiamate di sistema.
- File memorizzati in una partizione ext4 nativa su un disco virtuale.
- Un modo molto semplice per integrarsi con Docker.
Credo che per la maggior parte degli utenti le prestazioni dell'IO dei file e la facile integrazione con docker siano ragioni sufficienti.
Andiamo!
Presumo che abbiate l'ultima versione stabile di Windows 10 Pro. Per quanto riguarda oggi, si tratta della versione 1909.
Unitevi agli insider di Windows
Attualmente, WSL 2 è disponibile solo per Windows 10 nell'anello lento degli insider. Per quanto ne so, la versione stabile dovrebbe essere disponibile a maggio 2020 (release 20H1). Lo slow ring è una soluzione abbastanza sicura per gli utenti che vogliono avere nuove funzionalità un po' prima, già pre-testate dagli utenti del fast ring. L'anello lento riceve aggiornamenti di sistema fino a una o due volte al mese. Potete leggere le modifiche al rilascio per gli insider nel documento di Microsoft chiamato Hub di volo.
Per partecipare, è sufficiente seguire il sito ufficiale di Microsoft guida. È molto semplice e richiede circa 15 minuti senza perdere alcun dato personale.
Aggiornamento WSL 1 a WSL 2
Segui il sito ufficiale guida. È anche molto semplice, un paio di comandi di shell ed ecco fatto! A seconda di quanto era esteso il vostro Linux in WSL 1, questa operazione potrebbe richiedere un po' di tempo. Sfortunatamente, Microsoft non ha inserito una barra di avanzamento o informazioni sul tempo necessario, quindi siate pazienti.
Pulizia
Questa è la parte più importante per una corretta collaborazione tra WSL 2 e Docker. Dopo l'aggiornamento a WSL 2, molti utenti cercano di forzare la loro versione di Docker a collaborare, senza rendersi conto che il team di Docker, specialmente per WSL 2, ha preparato una release che farà tutto per noi. Questo è l'ultimo rilascio della versione Docker Edge (il loro nome beta) - "Docker Desktop WSL 2 backend". Questa versione, 2.1.7.0, è ben rifinita ed è una candidata per la prossima versione stabile.
Gli utenti che non avevano WSL 1 o che hanno appena installato una nuova versione di WSL 2 sono fortunati e possono passare immediatamente all'ultimo capitolo.
Se non si è pulito Docker (del tutto o correttamente) e non si è installata la versione corretta di Docker per WSL 2, si possono riscontrare alcuni errori comuni, ad es, Impossibile connettersi al demone Docker all'indirizzo tcp://localhost:2375", "Il demone Docker è in esecuzione?
ecc. Nella maggior parte dei casi, si perde tempo se non si sa che è necessario adottare un nuovo approccio per cercare di risolvere questi errori. Per farlo, è necessario innanzitutto rimuovere completamente Docker da WSL e da Windows, un passo non scontato.
L'esempio più comune di resti non rimossi è il vecchio approccio di Docker per impostare la variabile d'ambiente DOCKER_HOST=tcp://localhost:2375
sotto WSL 1 per la collaborazione con l'opzione Docker di Windows Esporre il demone su tcp://localhost:2375 senza TLS
.
Come rimuovere completamente Docker da WSL (Ubuntu)?
- Come il sito ufficiale di Docker documenti dire:
sudo apt-get remove docker docker-engine docker.io containerd runc
Di sicuro, è possibile aggiungere a questo elenco docker-ce
e docker-ce-cli
.
- Identificare tutti i pacchetti docker che si possiedono con
dpkg -l | grep -i docker
e rimuoverli se esistono ancora.
- Rimuovere tutti i residui:
sudo rm -rf /var/lib/docker /etc/docker /etc/apparmor.d/docker /var/run/docker.sock /usr/local/bin/docker-compose /etc/docker
sudo groupdel docker ~/.docker
- Questo passaggio è riservato agli utenti avanzati, quindi fate attenzione. Probabilmente non è necessario farlo.
Trova tutti docker
le occorrenze delle parole e rimuovere quelle di cui si è certi.
sudo find / -nome "*docker*"
- Controllare il contenuto di tutti i file qui sotto per
docker
occorrenze come ad esempio la variabile d'ambiente DOCKER_HOST=tcp://localhost:2375
.
È possibile modificare questi file con l'editor Nano, nano ~/.bashrc
o Visual Studio Code, codice ~/.bashrc
.
~/.bashrc
~/.bash_aliases
~/.bash_profile
~/.bash_login
~/.profilo
/etc/bash.bashrc
/etc/profilo
Come rimuovere completamente Docker da Windows?
- Disinstallare in modo normale con Windows
Applicazioni e funzioni
pannello.
- Rimuovere tutti i sottostanti, se esistenti:
C:ProgrammiDocker
C:ProgrammiDatiDockerDesktop
C:Utenti[NOMEUTENTE].docker
C:Utenti[NOMEUTENTE]AppDataLocalDocker
C:Utenti[NOMEUTENTE]AppDataRoamingDocker
C:Users[USERNAME]AppDataRoamingDocker Desktop
Cosa c'è dopo?
Installate l'ultima versione di Docker Desktop Edge da qui e seguire i passi del sito ufficiale documenti. Si tratta di pochi clic.
Se tutto è andato bene, si dovrebbe avere l'output di wsl -l -v
come questo:
NOME STATO VERSIONE
Ubuntu-18.04 In esecuzione 2
docker-desktop In esecuzione 2
docker-desktop-data In esecuzione 2
Questo è tutto. Docker ha creato i suoi contenitori WSL docker-desktop
e docker-desktop-dati
. Alcuni dei tutorial o dei consigli disponibili possono creare confusione perché questa volta non si dovrebbe installare o configurare nulla di relativo a Docker nella propria distribuzione WSL Linux. È molto importante ricordare. Dopo la pulizia, dovrebbe funzionare subito bene.
Inoltre...
L'impostazione di WSL 2 con Docker può essere un processo indolore con pochi semplici passaggi. Iniziate aggiornando elenchi di pacchetti utilizzando il comando "sudo apt-get update" per assicurarsi di avere le informazioni sulla versione più recente. Risolvere eventuali dipendenze mancanti con "sudo apt-get install -y build-essential" per un'installazione senza problemi. Installare Motore Docker con "sudo apt-get install -y motore docker" per creare, eseguire e gestire i container senza fatica. Eseguite "sudo docker run" seguito dal nome dell'immagine per lanciare i contenitori. Per mantenere l'ambiente ottimizzato, eseguire periodicamente "sudo docker system prune" per rimuovere i contenitori inutilizzati e liberare spazio su disco. Grazie a questi passaggi, potrete godere della perfetta integrazione di WSL 2 e Docker per una containerizzazione efficiente nel vostro flusso di lavoro di sviluppo.