Installation et utilisation de WSL2 / Docker sur Windows

Écrit le 17/04/2023
  1. Installation des prérequis de WSL

Pour démarrer, il est nécessaire d’installer les prérequis suivants conseillés par Docker : https://docs.docker.com/desktop/windows/wsl/#prerequisites.

Nous utiliserons une image Ubuntu installable depuis le store Microsoft : 

Une fois installé, nous allons mettre à jour notre WSL via l’invite de commande Powershell Windows : 

wsl --update

On retourne dans l’interface Docker pour activer l’intégration Docker dans notre WSL :

Une image contenant texte

Description générée automatiquement

 

  1. Mise en place de notre utilisateur

Notre WSL est maintenant créé et nous pouvons y accéder depuis le programme du même nom que notre machine virtuelle “Ubuntu”. Il nous faut maintenant créer un utilisateur, de préférence avec le même nom que notre utilisateur Windows.

sudo adduser adsy --force-badname

Une image contenant texte

Description générée automatiquement

On ajoute ensuite notre utilisateur aux sudoers :

usermod -aG sudo adsy

Une image contenant texte, écran, capture d’écran

Description générée automatiquement

Pour faciliter l’utilisation de WSL, on définit notre utilisateur par défaut avec l’utilisateur que l’on vient de créer :

ubuntu config --default-user adsy

Afin de faciliter également l’utilisation de ssh depuis notre WSL, on copie le dossier .ssh présent à la racine de notre utilisateur Windows vers la racine de notre utilisateur WSL.

chmod 700 .ssh/
cd .ssh/ => chmod 600 *

Il est intéressant de vérifier après un reboot du WSL que tout est maintenant fonctionnel vis à vis de votre utilisateur et de Docker depuis WSL. Il vous est désormais possible de récupérer vos projets git distant depuis la home de votre utilisateur WSL et de construire leurs images Docker.

 

  1. Installation et configuration d’Apache

Nous allons maintenant installer et configurer Apache au sein de notre WSL. Commençons par installer les packages requis : 

sudo apt update
sudo apt install apache2
sudo apt install net-tools
sudo apt install w3m
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_balancer
sudo a2enmod lbmethod_byrequests

 

Apache est désormais installé et lancé, il est possible de vérifier son statut via la commande suivante : 

apache2ctl status

Une image contenant texte

Description générée automatiquement

Via la commande ifconfig, installée par le package net-tools, on peut récupérer l’IP sortant de notre WSL et y accéder depuis notre Windows.

Une image contenant texte

Description générée automatiquement

 

Pour ne pas avoir à redémarrer Apache à chaque démarrage de votre WSL, il est possible de configurer des tâches à exécuter au démarrage via un fichier wsl.conf à créer au chemin /etc.

Pour plusieurs tâches, il suffit de les séparer par un “;”.

Une image contenant texte

Description générée automatiquement

 

  1. Figeage de l’IP de notre WSL et création de notre premier vhost

A chaque reboot du WSL, l’ip est renouvelée, ce qui pose problème dans l’idée de créer une stabilité dans l’utilisation de WSL. A l’aide du tutoriel décrit ici, nous allons créer un commutateur virtuel Hyper-V.

Lors du choix du réseau externe, on peut tâtonner en modifiant le réseau externe et en lançant la commande : « netsh interface ip show addresses "vEthernet (WSL_external)" » en même temps, jusqu’à obtenir le résultat indiqué par le tutoriel.

On a alors une IP statique pour notre WSL, ici 10.1.10.245 :

On crée ensuite un vhost pour le Apache de notre WSL, en créant un fichier wsl-vhost.conf au chemin /etc/apache2/sites-available/ : 

On utilise ProxyPass pour faire pointer notre url sur le port sortant de notre Docker.

On active ensuite notre fichier vhost et on relance Apache.

sudo a2ensite wsl-vhost
sudo apache2ctl configtest
sudo apache2ctl graceful

Une fois nos dockers lancés, apache lancé, on peut désormais modifier le fichier hosts Windows pour faire pointer notre url sur notre WSL.

Notre projet lancé et déployé dans notre WSL est désormais accessible depuis notre Windows.