GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Docker sous Windows ? Commencez à apprendre maintenant ou… !

Si vous débutez avec les conteneurs et Docker et que vous travaillez principalement sur Windows, vous allez vous régaler. Dans cet article, vous allez apprendre à configurer Docker sur Windows 10 à l'aide de Docker Desktop pour Windows ou simplement appelé Docker Desktop dans cet article.

Docker Desktop est le Docker Engine et un client de gestion regroupés pour une utilisation facile dans Windows 10. Dans cet article, vous allez installer Docker Desktop, déployer votre premier conteneur et partager des données entre votre hôte et vos conteneurs.

Prérequis pour Docker sous Windows

Il s'agit d'un article de démonstration illustrant les différentes étapes de Docker Desktop pour Docker sous Windows. Pour suivre, assurez-vous d'abord d'avoir quelques exigences spécifiques en place.

  • Une connexion Internet pour télécharger plus de 800 Mo de données
  • Windows 10 64 bits exécutant les éditions Pro, Enterprise ou Education avec la version 1703 ou une version ultérieure. Ceci est nécessaire pour exécuter Hyper-V sur Windows 10.
  • Un processeur avec compatibilité SLAT (pagination imbriquée). Tous les processeurs AMD/Intel depuis environ 2008 sont compatibles SLAT
  • Au moins 4 Go de RAM
  • La virtualisation matérielle du BIOS est parfois appelée technologie de virtualisation ou VTx . Cela doit être activé et affiché comme Activé dans l'onglet Performances du Gestionnaire des tâches, comme indiqué ci-dessous.

Téléchargement et installation de Docker Desktop

Tout d'abord, vous devez télécharger et installer Docker Desktop pour lancer Docker sur Windows. Docker Desktop est disponible en deux versions; une version stable et une version de test.

La version stable est publiée tous les trimestres et garantit une application entièrement testée. Dans cet article, vous utiliserez la version stable.

Avertissement :Lors de l'installation, Docker Desktop vous invitera à installer l'hyperviseur Hyper-V s'il n'est pas déjà installé. Ce faisant, l'hyperviseur Hyper-V empêche tous les hyperviseurs en mode utilisateur tels que VirtualBox, VMWare, etc. d'exécuter des machines virtuelles invitées. La prise en charge d'Hyper-V pour VirtualBox et VMWare est limitée mais à venir.

Vous avez également la possibilité de télécharger une source en téléchargeant manuellement Docker Desktop directement depuis Docker.com ou via le gestionnaire de packages Windows, Chocolatey. Passons brièvement en revue chaque méthode.

De Docker.com

Pour télécharger Docker Desktop directement depuis docker.com, vous pouvez vous rendre sur la page du produit, créer un compte et le télécharger à partir de là. Ceci est préférable si vous avez l'intention d'utiliser Docker en production en enregistrant un compte.

Cependant, si vous testez Docker pour la première fois, vous pouvez également le télécharger directement, ce qui est beaucoup plus facile.

Une fois l'EXE téléchargé, lancez l'exécutable et cliquez sur les invites en acceptant toutes les valeurs par défaut.

Lorsqu'on vous demande si vous prévoyez d'utiliser des conteneurs Windows au lieu de conteneurs Linux , comme indiqué ci-dessous, ne faites pas cochez la case. Vous utiliserez des conteneurs Linux dans cet article.

Une fois l'installation terminée, redémarrez votre ordinateur.

Sélectionner l'option d'utiliser des conteneurs Windows ou des conteneurs Linux indique à Docker d'attacher des images à un noyau Windows ou Linux. Vous pouvez modifier ce paramètre à tout moment après l'installation en cliquant avec le bouton droit sur l'icône Docker dans la barre d'état système et en sélectionnant Basculer vers les conteneurs Windows, comme indiqué ci-dessous.

Utiliser Chocolatey

L'autre option pour télécharger et installer Docker Desktop est avec Chocolatey. Chocolatey automatise de nombreuses tâches de téléchargement/d'installation pour vous. Pour ce faire, ouvrez une console de ligne de commande (cmd ou PowerShell) en tant qu'administrateur pour télécharger et installer le programme en une seule fois en exécutant la commande ci-dessous.

choco install docker-desktop

Une fois terminé, redémarrez Windows 10.

Si vous souhaitez essayer la version de test à un moment donné, vous pouvez la télécharger et l'installer en exécutant choco install docker-desktop --pre .

Validation de l'installation de Docker Desktop

Une fois installé, Docker Desktop s'exécute automatiquement en tant que service fournissant Docker sous Windows. Il s'affiche dans la barre d'état système lorsque vous vous connectez à Windows après le redémarrage. Mais comment savez-vous que cela fonctionne ?

Pour vérifier que Docker Desktop fonctionne correctement, ouvrez une console de ligne de commande et exécutez le docker commande. Si l'installation s'est bien déroulée, vous verrez une référence de commande Docker.

Enfin, demandez à Docker de télécharger et d'exécuter un exemple d'image de conteneur appelé hello-world en lançant la commande docker run hello-world . Si tout va bien, vous verrez une sortie comme ci-dessous.

Exécuter des commandes dans des conteneurs Docker

Docker Desktop est installé et vous avez vérifié que tout va bien ? Maintenant quoi? Pour démarrer avec Docker sous Windows, une tâche courante à effectuer dans un conteneur Docker consiste à exécuter des commandes. Via l'docker run commande, vous pouvez envoyer des commandes via l'hôte (votre PC Windows 10) directement dans un conteneur en cours d'exécution.

Pour exécuter des commandes dans un conteneur avec docker run , vous devez d'abord spécifier un nom d'image suivi de la commande. Pour commencer, dites à Docker d'exécuter la commande hostname à l'intérieur d'un conteneur appelé alpine comme indiqué ci-dessous.

> docker run alpine hostname
b74ff46601af

Puisque vous n'avez pas l'alpin Image Docker sur votre ordinateur maintenant, Docker sous Windows téléchargera la petite image à partir du Docker Hub, affichera un conteneur à partir de cette image, enverra la commande directement dans le conteneur et l'arrêtera d'un seul coup.

Si vous souhaitez que le conteneur continue de fonctionner, vous pouvez également utiliser le -it paramètre. Ce paramètre indique à Docker de garder le conteneur en "mode interactif" en le laissant s'exécuter au premier plan après l'exécution de la commande. Vous verrez que vous êtes alors présenté avec une invite de terminal prêt à partir.

> docker run -it alpine sh
/ #

Lorsque vous avez terminé dans le terminal, tapez exit pour revenir à Windows 10.

Accéder aux fichiers depuis l'hôte Docker dans les conteneurs

Une autre tâche courante consiste à accéder aux fichiers hôtes à partir de conteneurs. Pour accéder aux fichiers hôtes dans les conteneurs, Docker sur Windows vous permet de lier un chemin de dossier à partir de votre bureau pour partager ce dossier avec votre conteneur. Ce processus est appelé liaison .

Pour créer une liaison, créez un dossier sur un lecteur local. Pour cet exemple, j'utiliserai E:\ et appelez-le input. Il créera ensuite un nouveau document texte nommé file.txt dans le dossier. N'hésitez pas à utiliser le chemin et le fichier que vous souhaitez.

Une fois que vous avez le dossier que vous souhaitez partager entre l'hôte et le conteneur, Docker doit monter le dossier en utilisant le --mount paramètre. Le --mount paramètre nécessite trois arguments ; un type de montage, un chemin de répertoire hôte source et un chemin de répertoire cible. Le chemin cible sera un lien symbolique dans le conteneur.

Ci-dessous, vous verrez un exemple de montage de l'ensemble E:\ dans l'hôte Windows 10 pour apparaître en tant que /home/TEST répertoire à l'intérieur du conteneur Linux.

> docker run --mount type=bind,source="E:/",target=/home/TEST -it alpine

Lorsque vous essayez de monter un dossier hôte, Docker Desktop vous demandera la permission de partager ce lecteur avec les conteneurs Docker, comme indiqué ci-dessous.

Si vous avez créé le file.txt fichier dans le dossier Windows 10 comme décrit précédemment, exécutez cat /home/TEST/input/file.txt . Vous verrez que le contenu est affiché.

Maintenant, supprimez l'entrée dossier que vous venez de créer et exécutez le cat ... commander à nouveau. Observez que le shell signale maintenant que le fichier n'existe plus.

Mappage des ports réseau

Un autre concept important à connaître est la façon dont Docker sous Windows gère la mise en réseau. Pour une brève introduction, voyons ce qu'il faut pour accéder à un service Web exécuté dans un conteneur à partir de l'hôte local.

Tout d'abord, lancez une image de démonstration qui exécutera un exemple de page Web. Téléchargez et exécutez l'image Docker appelée dockersamples/static-site . Vous utiliserez docker container run pour le faire.

La commande suivante effectue quatre actions à la fois :

  • Télécharge une image Docker depuis Docker Hub appelée static-site dans les docker-samples "répertoire"
  • Démarre une instance de conteneur à partir du site statique photo
  • Détache immédiatement le conteneur du premier plan du terminal (—detach )
  • Rend les ports réseau du conteneur en cours d'exécution accessibles à l'hôte Windows 10 (—publish-all )
docker container run --detach --publish-all dockersamples/static-site
## Alternate/shorthand syntax that does the same thing:
## docker container run -d -P dockersamples/static-site
## docker run -d -P dockersamples/static-site

Une fois exécuté, Docker renverra l'ID de conteneur qui a été affiché comme indiqué ci-dessous.

Ports réseau de publication

Depuis l'utilisation de --publish-all paramètre, les ports hôtes locaux sont désormais mappés à la pile réseau du conteneur. Vous pouvez utiliser le docker ps sous-commande pour répertorier tous les conteneurs en cours d'exécution, y compris les ports attribués à tous les conteneurs en cours d'exécution. Dans l'exemple ci-dessous, un conteneur exécute le mappage du port hôte 32777 au port de conteneur 80 et du port hôte 32776 au port de conteneur 443.

Docker sur Windows attribue des ports aléatoires aux conteneurs lors de l'utilisation de --publish-all paramètre à moins de les définir explicitement.

Ouvrez maintenant un navigateur Web et accédez à http://localhost:32777 ou au port que Docker a attribué pour mapper au port 80 en sortie de docker ps . Si tout se passe bien, vous devriez voir apparaître la page Web ci-dessous.

Modification des ports publiés

Vous avez maintenant un conteneur Docker exécuté dans Docker sous Windows servant une simple page Web. Toutes nos félicitations! Mais maintenant, vous devez spécifier une liaison de port spécifique ne reposant pas sur la sélection de port aléatoire avec --publish-all . Aucun problème. Utilisez le -p paramètre.

Tout d'abord, arrêtez le conteneur en cours d'exécution en spécifiant une chaîne unique de son ID de conteneur. Vous pouvez trouver cet ID de conteneur en exécutant docker ps . Une fois que vous connaissez l'ID du conteneur, arrêtez le conteneur et démarrez-en un nouveau tout en désignant Docker pour attribuer un port spécifique à publier.

La syntaxe pour spécifier un port est <external port>:<container port> . Pour chaque port que vous souhaitez publier, utilisez le --publish ou -p commutateur avec les numéros de port externe et de conteneur comme indiqué ci-dessous.

> docker stop f766
> docker run --detach -p 1337:80 dockersamples/static-site

Lorsque vous spécifiez un ID de conteneur, il vous suffit de saisir suffisamment d'ID pour qu'il soit unique. Si vous n'exécutez qu'un seul conteneur et que son ID est f766f4ac8d66bf7 , vous pouvez identifier le conteneur à l'aide de n'importe quel nombre de caractères, y compris uniquement f . L'exigence est que tout ce que vous tapez lui permette d'identifier de manière unique un seul conteneur.

Allez maintenant dans votre navigateur Web et accédez à localhost:1337 . N'oubliez pas que vous ne modifiez pas l'image et qu'elle écoute toujours sur le port 80 ; vous modifiez la règle de traduction de port dans la configuration Docker qui vous permet de vous connecter au conteneur.

Arrêter tous les conteneurs

Utilisation de docker stop , vous pouvez arrêter un conteneur, mais comment arrêter plusieurs conteneurs à la fois ? Pour ce faire, vous pouvez notamment fournir plusieurs ID de conteneur délimités par des espaces. Vous pouvez voir ci-dessous un exemple de la façon d'arrêter trois conteneurs avec des ID de fd50b0a446e7 , 36ee57c3b7da , et 7c45664906ff.

> docker stop fd50 36ee 7c45

Si vous gérez des conteneurs Docker dans PowerShell, vous pouvez également utiliser un raccourci pour arrêter tous les conteneurs. Alimentez une liste d'ID de conteneur via docker ps -q au paramètre d'arrêt via l'extension de commande de PowerShell docker stop (docker ps -q) .

Confirmez que tous les conteneurs sont arrêtés en ne voyant aucun conteneur répertorié lorsque vous tapez docker ps .

Nettoyage

Vous avez téléchargé quelques images de conteneurs et exécuté certains conteneurs qui sont maintenant arrêtés. Même s'ils sont arrêtés, leur stockage alloué n'est pas supprimé du disque hôte local. Vous devez supprimer les conteneurs pour libérer cet espace et éviter d'encombrer votre espace de travail.

Pour supprimer un seul conteneur, utilisez le conteneur remove rm paramètre comme ci-dessous.

> docker container rm <container ID>

Ou, pour supprimer tous les conteneurs arrêtés, utilisez le prune paramètre comme ci-dessous.

> docker container prune

Docker
  1. Démarrer avec NetworkManager sous Linux

  2. Comment démarrer avec Juju?

  3. Création de votre premier conteneur Docker Windows Server

  4. Démarrer avec les serveurs cloud

  5. Apprendre Perl, mais comment obtenir 5.14 sous Windows ?

Tutoriel Podman - Premiers pas avec Podman

Premiers pas avec Docker Compose sous Linux

Lxc et comment commencer ?

Tutoriel de démarrage avec Azure Docker

Comment obtenir l'adresse IP du conteneur Docker

Comment :démarrer avec les conteneurs Windows et Docker