Cet article à pour objectif de vous accompagner dans l’installation de Docker et WSL2.
C’est une superbe plateforme pour développer et faire tourner vos kits docker pour ceux qui ne souhaitent pas basculer sur une machine Linux.

Qu’est ce que WSL2 ? Le mot de Wikipedia…

Windows Subsystem for Linux (WSL) est une couche de compatibilité permettant d’exécuter des exécutables binaires Linux  de manière native sur Windows 10 et Windows Server 2019.
Cette nouvelle version introduit d’importants changements, notamment la présence d’un véritable noyau Linux via un sous-ensemble de fonctionnalités Hyper-V. En juin 2019, WSL 2 est disponible pour les clients Windows 10 via le programme Windows Insider, y compris l’édition Famille. En juin 2020, il est accessible à tous les utilisateurs généraux Windows.

Les appels graphiques et les lectures de fichiers Linux deviennent très rapides, mais l’accès aux fichiers Windows est en revanche ralenti.

https://fr.wikipedia.org/wiki/Windows_Subsystem_for_Linux

Etape 1 : Vérifiez vos version de windows.

C’est simple, faites démarrer et tapez « winver ». Une fenêtre va s’ouvrir avec votre numéro de version actuel. En dessous de la version 2004, vous devez faire les mises à jour pour bénéficier de WSL2.

Etape 2 : Installez WSL2 et une distrib

Rien de plus simple, il existe beaucoup de documentation sur le sujet.

A ce stade, vous devez avoir une distribution Linux qui fonctionne sur votre poste. Pensez à faire les mises à jour de votre distrib Linux. Pour une débian ou Ubuntu:

  • sudo apt-get update
  • sudo apt-get upgrade
  • sudo apt-get dist-upgrade

Il ne reste qu’à installer et configurer Docker.

Etape 3 : Installer et configurer Docker avec WSL2

Téléchargez et installez une version plus récente que « Docker Desktop Stable » 2.3.0.2 : https://hub.docker.com/editions/community/docker-ce-desktop-windows/

Suivez la procédure proposez par docker : https://docs.docker.com/docker-for-windows/wsl/#install

En résumé, c’est très simple :

  1. Ouvrez les préférences de docker « Settings > General »
  2. Cochez la case ‘Use WSL2 based engine’. Notez => Inutile de cocher ‘Expose daemon on tcp… without TLS.
  3. Allez dans Settings > Resources > WSL Integration.
  4. Activez l’intégration pour la distribution Linux que vous utilisez.
  5. Appliquez et relancez docker et votre command prompt Linux

Pour vérifier que tout fonctionne, lancez un terminal de votre distribution, et faites un « docker ps ». Vous devriez obtenir une réponse de docker avec la liste des container en fonction.

Si ce n’est pas le cas, vous obtenez peut etre un des messages d’erreurs suivants:

« Cannot connect to the Docker daemon at tcp://localhost:2375 »

C’est normal, docker pour WSL2 n’expose pas par défaut le daemon docker sur localhost:2375. Probablement que vous indiquez dans une configuration qu’il doit utiliser de chemin. Pour vérifier, faites un « export » depuis votre prompt linux, et vérifier que vous n’exportez rien du type :

C’est souvent un résidu d’upgrade de WSL1 vers WSL2. Dans ce cas supprimer cet export. Pour le trouver ? c’est simple :

find / -type f -exec grep -H 'DOCKER_HOST' {} \;

Le coupable chez moi :

Un simple commentaire de cette ligne dans le bashrc et une ré-ouverture du prompt linux, résolvent le problème.

Pour ceux qui ont des soucis, voici mon context docker, en le comparant avec le votre, vous trouverez sans doute le problème :