Retour à l'accueil
  • #Cours
  • #Windows
  • #Docker
  • #Conteneur

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 ?

  1. Pré-requis
  2. Installer WSL 2 et lancer une distribution Debian
  3. Installer Docker Desktop
    1. Configuration
  4. Tester le fonctionnement de Docker dans la distribution WSL
  5. Alternative : Docker Engine natif dans WSL
  6. 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 !

Un shell WSL
Un shell 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) ;
Les paramètres Docker Desktop
Les paramètres Docker Desktop
  • 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 :

Ajouter un utilisateur au groupe docker
Ajouter un utilisateur au groupe docker

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

Crédits: photo de couverture par Jason Cooper