Bien démarrer avec les conteneurs distants Docker sur WSL2

ce guide pas-à-pas vous aidera à commencer à développer avec des conteneurs distants en configurant Desktop dockr pour Windows avec WSL 2 (Sous-système Windows pour Linux, version 2).

le bureau de l’arrimeur pour Windows fournit un environnement de développement pour la création, l’expédition et l’exécution d’applications dockerisée. en activant le moteur basé sur WSL 2, vous pouvez exécuter à la fois des conteneurs Linux et Windows dans le bureau de l’arrimeur sur le même ordinateur. (le bureau de l’arrimeur est gratuit pour une utilisation personnelle et pour les petites entreprises. pour plus d’informations sur les Pro, les équipes ou les tarifs de l’entreprise, consultez les faq sur les sites de l' arrimeur).

Vue d’ensemble des conteneurs Docker

Docker est un outil utilisé pour créer, déployer et exécuter des applications à l’aide de conteneurs. Les conteneurs permettent aux développeurs de créer un package d’application avec tous les éléments nécessaires (bibliothèques, frameworks, dépendances, etc.) et de le livrer comme un seul package. L’utilisation d’un conteneur garantit que l’application s’exécute de la même manière quels que soient les paramètres personnalisés ou les bibliothèques précédemment installées sur l’ordinateur qui l’exécute, qui peuvent être différents de ceux de l’ordinateur utilisé pour écrire et tester le code de l’application. Cela permet aux développeurs de se concentrer sur l’écriture de code sans se soucier du système sur lequel le code sera exécuté.

Les conteneurs Docker sont similaires aux machines virtuelles, mais ne créent pas un système d’exploitation virtuel complet. Au lieu de cela, Docker permet à l’application d’utiliser le même noyau Linux que le système sur lequel elle s’exécute. Le package de l’application peut ainsi demander uniquement les éléments qui ne sont pas déjà sur l’ordinateur hôte, ce qui réduit la taille du package et améliore les performances.

La disponibilité continue, à l’aide de conteneurs d’ancrage avec des outils tels que Kubernetes, est une autre raison pour la popularité des conteneurs. Cela permet de créer plusieurs versions de votre conteneur d’application à des moments différents. Au lieu de devoir mettre en place un système complet pour les mises à jour ou la maintenance, chaque conteneur (et ses microservices spécifiques) peut être remplacé à la volée. Vous pouvez préparer un nouveau conteneur avec toutes vos mises à jour, configurer le conteneur pour la production et pointer simplement vers le nouveau conteneur une fois qu’il est prêt. Vous pouvez également archiver différentes versions de votre application à l’aide de conteneurs et, si nécessaire, les laisser s’exécuter comme filet de sécurité.

Pour plus d’informations, consultez la Présentation des conteneurs de l’ancrage sur Microsoft Learn.

Prérequis

Notes

WSL peut exécuter des distributions à la fois en mode WSL version 1 ou WSL 2. Vous pouvez le vérifier en ouvrant PowerShell et en entrant : wsl -l -v . Assurez-vous que votre distribution est configurée pour utiliser WSL 2 en entrant : wsl --set-version <distro> 2 . Remplacez <distro> par le nom distribution (par exemple, Ubuntu 18,04).

dans WSL version 1, en raison des différences fondamentales entre Windows et Linux, le moteur de l’ancrable n’a pas pu s’exécuter directement à l’intérieur de WSL. l’équipe dockr a donc développé une solution alternative utilisant des machines virtuelles Hyper-V et LinuxKit. Toutefois, étant donné que WSL 2 s’exécute maintenant sur un noyau Linux avec une capacité d’appel système complète, l’arrimeur peut s’exécuter entièrement dans WSL 2. cela signifie que les conteneurs Linux peuvent s’exécuter en mode natif sans émulation, ce qui améliore les performances et l’interopérabilité entre vos Windows et les outils Linux.

Installer Docker Desktop

avec le serveur principal WSL 2 pris en charge dans le bureau de l’docker pour Windows, vous pouvez travailler dans un environnement de développement basé sur linux et créer des conteneurs linux, tout en utilisant des Visual Studio Code pour l’édition et le débogage de Code, et en exécutant votre conteneur dans le navigateur Microsoft Edge sur Windows.

Pour installer l’amarrage (après avoir déjà installé WSL) :

  1. Téléchargez le Bureau de l' ancrage et suivez les instructions d’installation.

  2. une fois l’installation terminée, démarrez le bureau de l’ordinateur de bureau à partir du Windows menu Démarrer, puis sélectionnez l’icône d’ancrage dans le menu icônes masquées de votre barre des tâches. cliquez avec le bouton droit sur l’icône pour afficher le menu commandes de l’ancrage et sélectionnez « Paramètres ». Icône du tableau de bord Bureau de l’ancrage

  3. assurez-vous que l’option « utiliser le moteur basé sur WSL 2 » est cochée Paramètres > général. Paramètres généraux du Bureau de l’ancrage

  4. sélectionnez parmi les distributions WSL 2 installées pour lesquelles vous souhaitez activer l’intégration de l’amarrage en accédant à : Paramètres > ressources > WSL integration. Paramètres des ressources du Bureau de l’ancrage

  5. Pour confirmer l’installation de Dockr, ouvrez une distribution WSL (par exemple, Ubuntu) et affichez la version et le numéro de build en entrant : docker --version

  6. Testez le fonctionnement correct de votre installation en exécutant une simple image d’ancrage intégré à l’aide de : docker run hello-world

Conseil

Voici quelques commandes d’ancrage utiles à connaître :

  • Répertoriez les commandes disponibles dans l’interface de ligne de commande de Docker en entrant : docker
  • Répertoriez les informations pour une commande spécifique avec : docker <COMMAND> --help
  • Répertoriez les images de Docker sur votre ordinateur (il s’agit simplement l’image Hello World à ce stade) avec : docker image ls --all
  • Répertorier les conteneurs sur votre ordinateur, avec : docker container ls --all ou docker ps -a (sans l’indicateur-a Show All, seuls les conteneurs en cours d’exécution sont affichés)
  • Répertoriez les informations à l’ensemble du système concernant l’installation de la station d’accueil, y compris les statistiques et les ressources (mémoire & de l’UC) disponibles dans le contexte WSL 2, avec : docker info

Développer dans des conteneurs distants à l’aide de VS Code

pour commencer à développer des applications à l’aide de dockr avec WSL 2, nous vous recommandons d’utiliser VS Code, ainsi que l’extension WSL et l’extension d’ancrage à distance.

  • installez le VS Code extension WSL à distance. cette extension vous permet d’ouvrir votre projet Linux exécuté sur WSL dans VS Code (vous n’avez pas à vous soucier des problèmes liés aux chemins d’accès, à la compatibilité binaire ou à d’autres défis liés au système d’exploitation).

  • Installez l’extension de Remote-Containers vs code. cette extension vous permet d’ouvrir votre dossier de projet ou référentiel à l’intérieur d’un conteneur, en tirant parti de l’ensemble complet des fonctionnalités de Visual Studio Code pour effectuer votre travail de développement dans le conteneur.

  • installez l’extension d’ancrage VS Code. Cette extension ajoute les fonctionnalités permettant de créer, de gérer et de déployer des applications en conteneur à partir de VS Code. (Vous avez besoin de l’extension de Remote-Container pour utiliser réellement le conteneur comme environnement de développement.)

Utilisons Dockr pour créer un conteneur de développement pour un projet d’application existant.

  1. Pour cet exemple, je vais utiliser le code source de mon Hello World didacticiel pour Django dans l’environnement de développement python configurer docs. Vous pouvez ignorer cette étape si vous préférez utiliser votre propre code source de projet. pour télécharger mon HelloWorld-Django application web à partir de GitHub, ouvrez un terminal WSL (Ubuntu, par exemple) et entrez :git clone https://github.com/mattwojo/helloworld-django.git

    Notes

    Stockez toujours votre code dans le même système de fichiers que celui dans lequel vous utilisez les outils. Cela entraîne des performances d’accès aux fichiers plus rapides. Dans cet exemple, nous utilisons un distribution Linux (Ubuntu) et souhaitez stocker nos fichiers de projet sur le système de fichiers WSL \\wsl\ . le stockage des fichiers de projet sur le système de fichiers Windows ralentit considérablement les choses lors de l’utilisation des outils Linux dans WSL pour accéder à ces fichiers.

  2. À partir de votre terminal WSL, remplacez les répertoires par le dossier du code source de ce projet :

    cd helloworld-django
    
  3. ouvrez le projet dans VS Code s’exécutant sur le serveur d’extension local à distance WSL en entrant ce qui suit :

    code .
    

    vérifiez que vous êtes connecté à votre distribution Linux WSL en vérifiant l’indicateur distant vert dans le coin inférieur gauche de votre instance de VS Code.

    VS Code Indicateur distant WSL

  4. à partir de la commande VS Code palette (Ctrl + maj + P), entrez : Remote-containers : ouvrir le dossier dans le conteneur... Si cette commande ne s’affiche pas lorsque vous commencez à la taper, vérifiez que vous avez installé l’extension de conteneur distant liée ci-dessus.

    VS Code Commande de conteneur distant

  5. Sélectionnez le dossier du projet que vous souhaitez déconteneurr. Dans mon cas, c’est \\wsl\Ubuntu-20.04\home\mattwojo\repos\helloworld-django\

    VS Code Dossier du conteneur distant

  6. Une liste de définitions de conteneur s’affiche, car il n’existe pas encore de configuration DevContainer dans le dossier du projet (référentiel). La liste des définitions de configuration de conteneur qui s’affiche est filtrée en fonction de votre type de projet. Pour mon projet Django, je sélectionne python 3.

    VS Code Définitions de configuration de conteneur distant

  7. une nouvelle instance de VS Code s’ouvre, commence à créer la nouvelle image et, une fois la génération terminée, démarre notre conteneur. Vous verrez qu’un nouveau .devcontainer dossier est apparu avec les informations de configuration de conteneur dans un Dockerfile devcontainer.json fichier et.

    dossier VS Code. devcontainer

  8. pour confirmer que votre projet est toujours connecté à la fois à WSL et à l’intérieur d’un conteneur, ouvrez le terminal intégré VS Code (Ctrl + maj + ~). Vérifiez le système d’exploitation en entrant : uname et la version Python avec : python3 --version . Vous pouvez voir que la commande uname est renvoyée sous la forme « Linux ». vous êtes donc toujours connecté au moteur WSL 2 et le numéro de version Python sera basé sur la configuration du conteneur qui peut différer de la version de Python installée sur votre distribution WSL.

  9. pour exécuter et déboguer votre application à l’intérieur du conteneur à l’aide de Visual Studio Code, commencez par ouvrir le menu exécuter (Ctrl + maj + D ou sélectionnez l’onglet dans la barre de menus de gauche). Sélectionnez ensuite exécuter et déboguer pour sélectionner une configuration de débogage, puis choisissez la configuration qui correspond le mieux à votre projet (dans mon exemple, il s’agit de « Django »). Cette opération crée un launch.json fichier dans le .vscode dossier de votre projet avec des instructions sur l’exécution de votre application.

    VS Code exécuter la configuration de débogage

  10. dans VS Code, sélectionnez exécuter > démarrer le débogage (ou appuyez simplement sur la touche F5 ). cela ouvre un terminal à l’intérieur de VS Code et un résultat semblable à celui-ci doit s’afficher : « démarrage du serveur de développement à http://127.0.0.1:8000/ la sortie du serveur avec le contrôle C ». Maintenez la touche CTRL enfoncée et sélectionnez l’adresse affichée pour ouvrir votre application dans votre navigateur Web par défaut et voir votre projet en cours d’exécution dans son conteneur.

    VS Code de l’exécution d’un conteneur d’ancrage

Vous avez maintenant configuré avec succès un conteneur de développement distant à l’aide de l’ordinateur de bureau de l’amarrage, alimenté par le backend WSL 2, que vous pouvez coder, générer, exécuter, déployer ou déboguer à l’aide de VS Code !

Résolution des problèmes

Contexte d’ancrage WSL déconseillé

Si vous utilisiez une préversion Tech préliminaire de la station d’accueil pour WSL, vous pouvez avoir un contexte d’ancrage appelé « WSL » qui est maintenant déconseillé et n’est plus utilisé. Vous pouvez vérifier à l’aide de la commande : docker context ls . vous pouvez supprimer ce contexte « wsl » pour éviter les erreurs avec la commande : docker context rm wsl lorsque vous souhaitez utiliser le contexte par défaut pour Windows et WSL2.

Les erreurs possibles que vous pouvez rencontrer avec ce contexte WSL déconseillé sont les suivantes : docker wsl open //./pipe/docker_wsl: The system cannot find the file specified. ou error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_wsl/v1.40/images/json?all=1: open //./pipe/docker_wsl: The system cannot find the file specified.

pour plus d’informations sur ce problème, consultez la page comment configurer l’ordinateur de connexion dans Windows système pour Linux (WSL2) sur Windows 10.

Problème de recherche du dossier de stockage de l’image de l’arrimeur

L’arrimeur crée deux dossiers distribution pour stocker les données :

  • \WSL $ \docker-Desktop
  • \WSL $ \docker-Desktop-Data

vous pouvez trouver ces dossiers en ouvrant votre distribution WSL Linux et en entrant : explorer.exe . pour afficher le dossier dans Windows explorateur de fichiers. Entrez : \\wsl\<distro name>\mnt\wsl <distro name> en remplaçant par le nom de votre distribution (par ex. Ubuntu-20,04) pour voir ces dossiers.

Pour plus d’informations sur la recherche des emplacements de stockage de l’arrimage dans WSL, consultez ce problème à partir du référentiel WSL ou de ce billet de StackOverlow.

Pour plus d’informations sur les problèmes généraux de dépannage dans WSL, consultez le document de Dépannage .

Ressources supplémentaires