Faire fonctionner des conteneurs Docker dans WSL
Avec l'intégration WSL 2 de Windows et Docker Desktop, comment utiliser des conteneurs Docker dans une distribution Debian sous WSL ?
- Pré-requis
- Installer WSL 2 et lancer une distribution Debian
- Installer Docker Desktop
- Tester le fonctionnement de Docker dans la distribution WSL
- Alternative : Docker Engine natif dans WSL
- Aller plus loin avec les sources
Avec l'arrivée de Docker Desktop, il est dorénavant aisé de faire « tourner » des conteneurs Docker sous Windows.
Il est par contre moins simple d'utiliser les outils propres au monde UNIX (make, bash, utilitaires GNU…) dont on a souvent besoin dans un workflow de développement.
Nous opterons pour une approche élégante : lancer une distribution WSL Debian et y faire tourner nos conteneurs Docker. De cette manière nous disposerons de l'ensemble de l'outillage Linux, sans avoir à l'installer directement sur Windows.
Pré-requis
- Windows 10 version 21H2 minimum (Windows 11 recommandé) ;
- Droits administrateur sur le poste Windows ;
- Installer Windows Terminal (pour le confort).
Windows 10 versions antérieures à 21H2
Sur les versions plus anciennes de Windows 10, WSL 2 nécessite d'activer manuellement deux fonctionnalités Windows avant de continuer :
powershell dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
Puis redémarrer la machine et installer la mise à jour du kernel WSL 2 avant de poursuivre.
Installer WSL 2 et lancer une distribution Debian
- S'assurer que l'on utilise bien la version 2 de WSL :
wsl --set-default-version 2 - Installer la distribution Debian :
wsl --install -d Debian
Il faudra ensuite renseigner un nom d'utilisateur ainsi qu'un mot de passe (à ne pas perdre de préférence). Vous pouvez vérifier que la distribution tourne bien en version 2 avec la commande suivante (dans PowerShell) :
wsl --list --verbose
La colonne VERSION doit afficher 2 en face de Debian. Vous devriez au final obtenir un shell comme ci-dessous, félicitations, vous êtes dans une distribution Debian sous WSL !
Installer Docker Desktop
La partie la plus simple, téléchargez et installez-le ici : https://docs.docker.com/desktop/windows/wsl/#download
Configuration
Il y a quelques options à vérifier / activer pour un bon fonctionnement.
- Tout d'abord vérifier que le support de WSL 2 est activé dans les paramètres (Resources → WSL integration) ;
- Ensuite vérifier que le support pour votre distribution est activé (Debian).
Tester le fonctionnement de Docker dans la distribution WSL
Il faudra pour cela quitter et relancer votre distribution (dans un PowerShell : wsl -d Debian).
Une fois à l'intérieur de celle-ci, il sera nécessaire de donner les droits à votre utilisateur d'utiliser Docker en l'ajoutant au groupe du même nom.
sudo usermod -aG docker $USER
La modification ne prend effet qu'après fermeture et réouverture de la session WSL. Vous pouvez également utiliser newgrp docker pour l'appliquer immédiatement sans quitter la session.
Appartenir au groupe docker équivaut à des droits root
L'ajout au groupe docker donne un accès complet au socket Docker, ce qui permet de monter n'importe quel répertoire de la machine hôte dans un conteneur. Sur un poste de développeur personnel, c'est acceptable. En environnement partagé ou sensible, préférez sudo docker ou configurez le mode rootless.
Pour terminer, la commande docker ps devrait vous renvoyer l'écran ci-dessous :
Alternative : Docker Engine natif dans WSL
Docker Desktop n'est pas la seule option. Il est possible d'installer Docker Engine directement dans la distribution WSL, sans passer par Docker Desktop. C'est l'approche recommandée pour éviter la couche d'abstraction de Docker Desktop et ses contraintes.
Dans votre distribution Debian WSL :
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
newgrp docker
Le script get.docker.com est fourni et maintenu par Docker. Pour une installation en environnement sensible, préférez la méthode par dépôt APT officiel qui permet de vérifier la signature GPG des paquets.
Aller plus loin avec les sources
- https://learn.microsoft.com/fr-fr/windows/wsl/basic-commands
- https://learn.microsoft.com/fr-fr/training/modules/wsl/wsl-introduction/
- https://learn.microsoft.com/fr-fr/windows/wsl/install
- https://learn.microsoft.com/fr-fr/windows/wsl/