En introduisant le sous-système Windows pour Linux (WSL), Microsoft a donné aux développeurs la possibilité d'exécuter un environnement GNU/Linux directement sur Windows, sans modification, sans la surcharge d'une machine virtuelle. C'est une excellente solution car de nombreux développeurs utilisent un système pour la programmation et un autre pour les loisirs.
Le WSL est encore en cours de développement, mais il est actuellement adapté aux applications modernes. développement de logicielstant dans la première que dans la deuxième version. En parcourant les problèmes et les questions signalés sur l'internet, la plupart d'entre eux semblent concerner l'intégration de WSL avec Docker, en particulier lorsqu'il s'agit de passer de WSL 1 à WSL 2.
Cet article dissipera toutes les ambiguïtés et vous aidera à passer ce cap sans encombre. Si vous n'avez pas le WSL 1 et que vous souhaitez avoir le WSL 2 avec Docker, vous pouvez passer directement au dernier chapitre.
Que gagnerez-vous ?
- Le dernier noyau Linux stable (mis au point par Microsoft). WSL 1 dispose d'une interface noyau compatible avec Linux sans le noyau Linux. code.
- Performances accrues en matière d'entrées-sorties de fichiers. Jusqu'à 20 fois plus rapide que le WSL 1 lors du décompactage d'une archive zippée, environ 2 à 5 fois plus rapide lors de l'utilisation de la fonction clone git
, npm install
et cmake
sur différents projets.
- Compatibilité totale avec les appels système. Les binaires Linux utilisent les appels système pour exécuter de nombreuses fonctions, telles que l'accès aux fichiers, la demande de mémoire, la création de processus et bien d'autres encore. Alors que le WSL 1 utilisait une couche de traduction construite par le WSL équipeLe WSL 2 comprend son propre noyau Linux avec une compatibilité totale avec les appels système.
- Fichiers stockés dans une partition ext4 native sur un disque virtuel.
- Une façon très simple de s'intégrer à Docker.
Je pense que pour la plupart des utilisateurs, les performances en matière d'entrées-sorties de fichiers et la facilité d'intégration de Docker sont des raisons suffisantes.
C'est parti !
Je suppose que vous disposez de la dernière version stable de Windows 10 Pro. Pour ce qui est d'aujourd'hui, il s'agit de la version 1909.
Rejoindre les initiés de Windows
Actuellement, WSL 2 n'est disponible pour Windows 10 que dans l'anneau lent des initiés. Pour autant que je sache, la version stable devrait être disponible en mai 2020 (version 20H1). L'anneau lent est une solution assez sûre pour les utilisateurs qui souhaitent bénéficier des nouvelles fonctionnalités un peu plus tôt, déjà pré-testées par les utilisateurs de l'anneau rapide. L'anneau lent reçoit des mises à jour du système jusqu'à une ou deux fois par mois. Pour en savoir plus sur les changements de version des initiés, consultez le document de Microsoft intitulé Hub de vol.
Pour participer, il suffit de suivre le site officiel de Microsoft guide. C'est très facile et cela prend environ 15 minutes sans perdre aucune donnée personnelle.
Passage du WSL 1 au WSL 2
Suivez le site officiel guide. C'est également très facile, quelques commandes shell et vous voilà prêt ! En fonction de l'étendue de votre Linux sous WSL 1, cela peut prendre un certain temps. Malheureusement, Microsoft n'a pas placé de barre de progression ou d'informations sur le temps nécessaire, alors soyez patient.
Nettoyage
C'est la partie la plus importante pour une bonne coopération entre WSL 2 et Docker. Après la mise à jour vers WSL 2, de nombreux utilisateurs essaient de forcer leur version de Docker à coopérer sans réaliser que l'équipe de Docker, spécialement pour WSL 2, a préparé une version qui fera tout pour nous. Il s'agit de la dernière version de la version Docker Edge (leur nom bêta) - "Docker Desktop WSL 2 backend". Cette version, 2.1.7.0, est bien finie et est un candidat pour la prochaine version stable.
Les utilisateurs qui n'avaient pas WSL 1 ou qui viennent d'installer une nouvelle version de WSL 2 ont de la chance et peuvent passer immédiatement au dernier chapitre.
Si vous n'avez pas nettoyé votre Docker (du tout ou correctement) et que vous n'avez pas installé la bonne version de Docker pour WSL 2, vous risquez de rencontrer certaines erreurs courantes, par exemple, Impossible de se connecter au démon Docker à tcp://localhost:2375", "Le démon Docker est-il en cours d'exécution ?
etc. Dans la plupart des cas, vous perdrez du temps si vous ne savez pas qu'il faut adopter une nouvelle approche pour tenter de résoudre ces erreurs. Pour ce faire, vous devez d'abord supprimer complètement Docker de WSL et de Windows, ce qui n'est pas une étape évidente.
L'exemple le plus courant de restes non supprimés est l'ancienne approche de Docker consistant à définir la variable d'environnement DOCKER_HOST=tcp://localhost:2375
sous WSL 1 pour coopérer avec l'option Windows Docker Exposer le démon sur tcp://localhost:2375 sans TLS
.
Comment supprimer complètement Docker de WSL (Ubuntu) ?
- En tant qu'outil officiel de Docker documents dire :
sudo apt-get remove docker docker-engine docker.io containerd runc
Vous pouvez certainement ajouter à cette liste docker-ce
et docker-ce-cli
.
- Identifiez tous les paquets Docker que vous avez avec
dpkg -l | grep -i docker
et les supprimer s'il en existe encore.
- Enlever tous les résidus :
sudo rm -rf /var/lib/docker /etc/docker /etc/apparmor.d/docker /var/run/docker.sock /usr/local/bin/docker-compose /etc/docker
sudo groupdel docker ~/.docker
- Cette étape est réservée aux utilisateurs avancés, soyez donc prudents. Il est probable que vous n'ayez pas besoin de la réaliser.
Trouver tout docker
mots et supprimez ceux dont vous êtes sûrs.
sudo find / -name "*docker*"
- Vérifiez le contenu de tous les fichiers ci-dessous pour
docker
occurrences comme par exemple une variable d'environnement DOCKER_HOST=tcp://localhost:2375
.
Vous pouvez éditer ces fichiers avec l'éditeur Nano, nano ~/.bashrc
ou Visual Studio Code, code ~/.bashrc
.
~/.bashrc
~/.bash_aliases
~/.bash_profile
~/.bash_login
~/.profile
/etc/bash.bashrc
/etc/profile
Comment supprimer complètement Docker de Windows ?
- Désinstaller normalement avec Windows
Applications et fonctionnalités
panneau.
- Supprimer tous les éléments ci-dessous s'ils existent :
C:Program FilesDocker
C:ProgramDataDockerDesktop
C:Users[USERNAME].docker
C:Users[USERNAME]AppDataLocalDocker
C:Users[USERNAME]AppDataRoamingDocker
C:Users[USERNAME]AppDataRoamingDocker Desktop
Quelle est la prochaine étape ?
Installez la dernière version de Docker Desktop Edge à partir de ici et suivez les étapes du site officiel documents. Il suffit de quelques clics.
Si tout se passe bien, vous devriez obtenir votre sortie de wsl -l -v
comme ceci :
NOM ÉTAT VERSION
Ubuntu-18.04 En cours d'exécution 2
docker-desktop En cours d'exécution 2
docker-desktop-data En cours d'exécution 2
C'est tout. Docker a créé ses propres conteneurs WSL docker-desktop
et docker-desktop-data
. Certains des tutoriels ou conseils disponibles peuvent être déroutants parce que cette fois-ci vous ne devriez pas installer ou configurer quoi que ce soit lié à Docker sous votre distribution WSL Linux. Il est très important de s'en souvenir. Après le nettoyage, l'appareil doit fonctionner immédiatement.
En outre.
L'installation du WSL 2 avec Docker peut être un processus sans douleur avec quelques étapes simples. Commencez par mettre à jour listes de colis en utilisant la commande "sudo apt-get update" pour s'assurer que vous disposez des dernières informations sur la version. Résolvez les dépendances manquantes avec "sudo apt-get install -y build-essential" pour une installation en douceur. Installer Moteur Docker avec "sudo apt-get install -y docker-engine"pour construire, exécuter et gérer des conteneurs sans effort. Exécutez "sudo docker run" suivi du nom de l'image pour lancer les conteneurs. Pour optimiser votre environnement, exécutez régulièrement "sudo docker system prune" pour supprimer les conteneurs inutilisés et libérer de l'espace disque. Avec ces étapes, vous pouvez profiter de l'intégration transparente de WSL 2 et de Docker pour une conteneurisation efficace dans votre flux de travail de développement.