Mais cette version 2 est-elle vraiment extraordinaire ? Et ça va changer quoi dans mon utilisation de Docker Desktop ?
WSL2 c'est quoi ?
Il faut être honnête WSL2 apporte un gros changement par rapport à la première version. Mais ... ( Oui je sais, tout ce qui est dit avant le mais c'est de la ... ) est-ce vraiment une évolution ?
En réalité c'est un changement de cap complet que tente Microsoft avec WSL2. Quelques explications s'imposent !
WSL est une couche de compatibilité permettant d'exécuter des fichiers binaires Linux ( format ELF ) de manière native. Il n'y a là aucun code du noyau Linux, on exécute des espaces utilisateurs directement depuis Windows au travers d'une API.
Et la version 2 dans ce cas ?
La version 2 se base autour d'une machine virtuelle qui exécute un noyau linux ! Il faut revenir en 2018 pour comprendre le tout.
À l'époque Microsoft présente une variante dite "légère" de machine virtuelle Hyper-V pour la conteneurisation. Tout comme pour linux, cette machine virtuelle peut faire des appels directs aux fonctions primitives du Noyau.
Un an plus tard, Microsoft décide donc de revoir son architecture WSL afin d'intégrer cette machine virtuelle au projet : Il souhaite utiliser cette technique de conteneurisation avec des images du noyau linux afin de revoir WSL. La version 2 vient de voir le jour.
Ce projet est présenté comme un outil pour développeurs webs et forcément tout ceux qui travaillent sur des projets open source. WSL2 utilisant moins de ressources qu'une machine virtuelle "classique" et permettant de faire cohabiter l'exécution de logiciel "Linux" dans un environnement Windows. Pratique donc pour tout ceux amenés à utiliser les deux environnements.
De mon côté, il m'arrive fréquemment d'utiliser Windows pour assouvir ma passion du jeux-vidéo et si une technologie peut m'éviter le dual-boot et mes 50 installations par an, j'essaye !
Activer WSL2
Ce n'est pas très complexe en suivant la documentation fournie par Microsoft.
⚠️Il s'agit d'une version de Windows en preview, vous pourrez rencontrer des bugs à l'utilisation, je vous conseille de réaliser une sauvegarde au préalable de vos données.
De plus, il est préférable de rappeler que vous devrez lier un compte Outlook à votre poste afin d'adhérer au programme Insider.
Attention les volumes existants de Docker disparaissent lors de la migration vers WSL2 ! Il est donc préférable de réaliser cette transition à tête reposée ! ⚠️
- Ouvrez les paramètres Windows Insider
- Choisir le type de version d’évaluation "Rapide"
- Ouvir Windows Update
- Cliquer sur “Rechercher les mises à jour” pour télécharger le dernier build
Ensuite il faut ouvrir powershell
en mode Administrateur pour exécuter les commandes suivantes :
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
Il est nécessaire de redémarrer votre poste afin de prendre en compte les modifications.
Ensuite activez le WSL 2 par défaut, ce n'est pas obligatoire mais ça évitera de réaliser la migration de la machine virtuelle en V2 par la suite :
wsl --set-default-version 2
Vous pourrez installer une distribution Linux. Pour la suite de cet article, je vais installer Ubuntu 18.04.
Il est possible de réaliser cette installation depuis le Store de Microsoft. Je vais toutefois réaliser celle-ci à l'aide de la ligne de commande.
Récupérons l'image d'Ubuntu 18.04 :
Invoke-WebRequest -Uri https://aka.ms/wsl-ubuntu-1804 -OutFile Ubuntu.appx -UseBasicParsing
Enfin nous pouvons l'installer :
Add-AppxPackage .\Ubuntu.appx
Il faudra réaliser le reste de l'installation via l'interface graphique :
- Menu démarrer
- Ubuntu 18.04
Lancer la machine virtuelle, après quelques minutes vous devriez pouvoir saisir un identifiant et mot de passe :
Docker
Pourquoi activer WSL 2 sur Docker Desktop ( Windows ) en lieu et place d'une instance Hyper-V ?
Je vais être pragmatique au possible :
- Le temps de démarrage du daemon Docker : On passe ici de quelques dizaines de secondes ( qui semblent bien longues quand on est pressé ) à quelques secondes avec WSL2.
- Docker n'alloue plus les ressources à une machine Hyper-V pour exécuter vos containeurs. Résultalt, l'allocation des ressources est dynamique ! Et de ce fait beaucoup moins gourmand en ressource quand ça ne sert pas !
Et en plus c'est très facile de le mettre en place. Alors pourquoi s'en priver ?
Pour activer le support de WSL 2 dans Docker :
Vous constaterez que je n'aborde pas le volet "performance" de cette version 2 de WSL. Pourquoi ?
Les premiers benchmarks semblent certes démontrer un réel potentiel de la solution ( en tout cas au moins aussi rapides que la V1 sur certains points mais également bien plus rapides sur d'autres ... ).
Vous voilà au point sur WSL2, et vous pouvez maintenant l'installer et en profiter directement avec Docker Desktop.
Cette évolution de WSL2 vous permettra également d'avoir accès à la prise en charge de Kubernetes, elle fournit un démon Docker mis à jour, et offre une mise en réseau compatible avec les VPN.
Enfin pour finir de convaincre certaines personnes : tout ceci sera compatible sur Windows 10 Home. Actuellement Docker Desktop ne fonctionne que sur une version à minima "Pro".
Et vous que pensez-vous de cet apport de WSL2 ? Cette évolution vous fera t-elle utiliser Windows comme OS principal ?
En tout cas n'hésitez pas à m'apporter des remarques ou des commentaires sur Twitter
Petit ajout dans les avertissements pour les volumes Docker qui ne sont pas conservés lors de la migration vers WSL2 ( Merci à Teddy Ferdinand pour l'information ! ).
J'ajouterai également de mon côté que cette version WSL2 ne semble pas désallouer la mémoire dans le temps. Après de nombreux docker build
, ma mémoire est saturée et ne se désalloue pas. À confirmer dans le temps.