Visualiser l'architecture de vos projets
Visualiser l'architecture de vos projets
Sommaire
WSL pour Windows SubSystem Linux, est une solution développée par Microsoft vous permettant de faire tourner différentes distributions Linux sur Windows 10.
Note
Pour plus d'informations sur l'implémentation de WSL 2, une vidéo de présentation et des slides sont disponibles.
WSL premier du nom, est un driver pour Windows implémentant l'API du noyau Linux, qui transforme les appels au noyau en instructions compatibles Windows NT. Ce qui pose de nombreux problèmes de compatibilité notamment avec l'API permettant d'accéder au système de fichiers.
Pour résoudre les différents problèmes de compatibilité, de performances et pour réduire les coûts de maintenance de WSL, la version 2 fait tourner un véritable noyau Linux compilé et maintenu par Microsoft dans Hyper-V (qui est un hyperviseur de type 1).
À la rédaction de ce guide, pour profiter de WSL2, il vous faudra rejoindre le programme Windows Insider
Lancer PowerShell en tant qu'administrateur
powershell
Activer les fonctionnalités optionnelles nécessaires
Enable-WindowsOptionalFeature -Online -NoRestart -FeatureName VirtualMachinePlatform Enable-WindowsOptionalFeature -Online -NoRestart -FeatureName Microsoft-Windows-Subsystem-Linux Restart-Computer
Important
Votre ordinateur va redémarrer pour activer les fonctionnalités optionnelles de Windows.
Vous pouvez obtenir la liste des distribution disponibles ici
Dans ce guide nous allons installer Ubuntu, libre à vous d'expérimenter avec d'autres distributions.
wsl --list --verbose NAME STATE VERSION * Ubuntu Stopped 1
Passer Ubuntu en WSL2
wsl --set-version Ubuntu 2
Lancer Ubuntu et se positionner dans le répertoire de l'utilisateur courant.
wsl ~ -d Ubuntu
Arrivé à cette étape, vous vous trouvez maintenant dans le shell Ubuntu.
Pour installer Docker, nous allons passer par le script d'installation de Docker
# Installation de Docker curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh
# On ajoute l'utilisateur courant au groupe Docker sudo usermod -aG docker $USER
# On se reconnecte avec l'utilisateur courant pour appliquer les droits su - $USER
# On lance le démon Docker sudo service docker start
# Tester Docker (Ctrl+C pour stopper le conteneur) docker run --rm -it -p 80:80 containous/whoami
Ouvrir votre navigateur et visiter http://localhost
Note
Les distributions Linux conçues pour tourner dans WSL2 ne sont pas livrées avec des scripts de démarrage tels que System V, Systemd ou encore Upstart. Ce qui veut dire qu'il faudra lancer vous-même le démon docker au démarrage d'Ubuntu via sudo service docker start
.
À savoir
Par défaut Windows arrête les conteneurs Linux au bout de quelques secondes en l'absence de tâches de fond. Si telle est votre intention, pensez à arrêter le démon docker via sudo service docker stop
avant d'éxécuter la commande exit
ou de fermer votre terminal.
Si vous souhaitez démarrer automatiquement des services au lancement d'Ubuntu, Shayne Sweeney a écrit un guide plutôt complet permettant de lancer Systemd au démarrage d'Ubuntu.
Attention
La section de l'article Access localhost ports from Windows n'est plus nécessaire car la dernière version de WSL 2 le fait déjà.
Info
Dans les grande lignes, l'astuce consiste à remplacer le shell de l'utilisateur root
par un script qui lance systemd et qui vous authentifie sur votre session utilisateur via nsenter
Windows Terminal (source) est un terminal moderne, configurable et personnalisable qui centralise PowerShell, Cmd, Azure Cloud Shell et vos shells Linux en une seule application.
L'application est personnalisable via un fichier .json
. Utilisez Ctrl + , pour y accéder ou utilisez l'interface de l'application.
Le schéma du fichier est décrit via JSON Schema, le lien est consultable via la propriété $schema
. Si vous utilisez VSCode, vous aurez accès à de l'autocomplétion 🎉.
profiles
contient toutes les configurations par défaut de chacun de vos shellsschemes
vous permet de déclarer des thèmes, utilisables par la suite dans le profil de votre shell via la propriété colorScheme
.keybindings
vous permet de configurer vos raccourcis clavierPour plus d'informations sur la personnalisation de Windows Terminal, je vous invite à consulter les articles de Kayla Cinnamon, Program Manager chez Microsoft mais aussi cet article de Scott Hanselman
Info
Des thèmes pour Windows Terminal sont disponibles dans le dépôt Github mbadolato/iTerm2-Color-Schemes. Personnellement, j'utilise le thème Argonaut
pour mon shell Ubuntu.
Windows identifie les fins de lignes avec la séquence CRLF \r\n
.
Sous Linux, les fins de lignes n'utilisent que le caractère LF \n
.
Pour éviter de vous retrouver avec des doublements de lignes dans Windows Terminal quand vous collez du texte, je vous suggère d'utiliser AutoHotKey, (qui est un utilitaire permettant d'automatiser des tâches sous Windows).
On va commencer par ouvrir le répertoire des scripts lancés au démarrage de Windows :
shell:startup
puis ↵ Entréecopy-paste-on-windows-terminal.ahk
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
; Replace Windows line termination from CRLF to LF while copy/pasting into Windows Terminal
#if WinActive("ahk_exe WindowsTerminal.exe")
RemoveCrlfFromClipBoard() {
Var := Clipboard
Clipboard := RegExReplace(Var, "\r\n?|\n\r?", "`n")
return
}
RButton::
^+v::
RemoveCrlfFromClipBoard()
MouseClick, Right
return
#if
Info
Par défaut, dans Windows Terminal, l'opération coller se fait via 🖱️ Droit ou la combinaison Ctrl + ⇧ Shift + V. Le script les intercepte pour replacer les séquences \r\n
par \n
Windows Terminal étant en "Development Preview", il existe encore des bugs qui peuvent ruiner votre expérience utilisateur, mais dans l'ensemble, le terminal est plutôt stable et utilisable.
Si vous rencontrez un bug d'affichage rendant l'interface complètement noire en déplaçant la fenêtre sur votre bureau...
... Il suffit de renseigner une largeur initiale pour la fenêtre de 110
via l'option initialCols
. Cela fonctionne aussi avec des valeurs au-delà de 130
🤷 (le mystère reste entier).
Commencez par installer un serveur X pour Windows tel que :
Astuce
Si vous utilisez X410, activez l'option Allow Public Access.
Astuce
Pour VcXsrv, utilisez l'utilitaire Xlaunch, conservez les options par défaut et choisissez Disable Access Control.
Pour finir, ajoutez dans le fichier de configuration de votre shell Linux (ex: .bashrc
, .zshrc
)
# Récupère l'adresse IP permettant d'accèder au server X tournant sur Windows export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2; exit;}'):0.0
Puis lancez une application graphique
apt update && apt install -y mesa-utils && glxgears
Vous pouvez même lancer les applications graphiques depuis Docker 🐳. Jess Frazelle, dans son article Docker Containers on the Desktop aborde en détail la marche à suivre. Son dépôt est disponible ici
# Exemple avec InkScape docker run --rm -it -e DISPLAY jess/inkscape
À ajouter dans votre fichier .bashrc
ou .zshrc
# Rediriger la sortie d'une commande dans le presse-papier Windows
# ex: cat ~/.ssh/id_rsa.pub | copy
alias copy='clip.exe'
# Permet d'ouvrir un fichier, un dossier ou une url dans Windows
alias open="rundll32.exe url.dll,FileProtocolHandler"
# Alias d'`open` pour des raisons de compatibilité
alias xdg-open="open"
Précision
Ceci n'est pas une liste exhaustive, mais de plus en plus de logiciels prévoient le support de WSL 2.
VSCode pour Windows supporte WSL avec le module Remote - WSL
The 2019.3 Early Access Program gets close to the finish line. But we have something new for you in the fresh build – WSL Support! https://t.co/PgVZbyYoAU pic.twitter.com/wvzdEOrYAo
— JetBrains PhpStorm (@phpstorm) October 25, 2019
L'Early Access 2019.3 de PHPStorm pour Windows ajoute le support de WSL et la fonctionnalité ne tardera pas à rejoindre la version stable de L'IDE.
Auteur(s)
Guillem Canal
Architecte Technique. Collaboration over competition 🖖
Vous souhaitez en savoir plus sur le sujet ?
Organisons un échange !
Notre équipe d'experts répond à toutes vos questions.
Nous contacterDécouvrez nos autres contenus dans le même thème
Visualiser l'architecture de vos projets
Dans cet article, nous allons détailler, étape par étape, la mise en place d'une Docker Registry. Une Docker Registry est une application qui permet de distribuer des images Docker au sein de votre organisation.