Fermer

juin 25, 2021

Docker Bootcamp – Conteneurs Windows


Bienvenue à Docker Bootcamp. Jusqu'à présent, tous les exemples que nous avons vus ont utilisé des conteneurs Linux. Dans cet article, nous allons passer aux conteneurs Windows. Toutes les commandes Docker que vous avez apprises fonctionneront toujours. Mais maintenant, nous aurons accès à Windows, PowerShell et Internet Information Services (IIS) pour exécuter des applications basées sur .net.

Passer aux conteneurs Windows

  • Activer les fonctionnalités Windows facultatives.
    • Ouvrir une fenêtre PowerShell en tant qu'utilisateur administrateur
    • Enable-WindowsOptionalFeature -Online -FeatureName $("Microsoft-Hyper-V", "Containers") -All
    • Redémarrer l'ordinateur
  • Vérifier les paramètres actuels du conteneur
    • Informations sur le Docker
      • Notez que la ligne OSType est actuellement définie sur Linux
  • Utilisez le dockercli pour changer de moteur de conteneur
    • 'c:Program FilesDockerDockerdockercli.exe' -SwitchWindowsEngine
  • Valider les nouveaux paramètres du conteneur
    • Informations sur le Docker
      • Notez que la ligne OSType est maintenant définie sur Windows

Exécutez un conteneur Windows

  • Extrayez une image du registre Docker
    • docker pull mcr.microsoft.com/windows/servercore/iis
  • Créer et démarrer un conteneur détaché et mapper le port exposé à un port hôte spécifique
    • docker run -d -p 8080:80 –name defaultsite mcr.microsoft.com/windows/servercore/iis
  • Afficher le site par défaut
    • Parcourir jusqu'à localhost:8080
      • Remarquez que le site Web IIS par défaut se charge

Connectez un terminal Powershell

  • Exécutez une commande pour démarrer un terminal PowerShell interactif
    • docker exec -it defaultsite powershell.exe

Vous avez maintenant accès au terminal PowerShell complet pour naviguer dans le système de fichiers et gérer le conteneur. Vous pouvez également vous connecter à une invite de commandes en exécutant cmd.exe au lieu de powershell.exe. Comme mentionné précédemment, docker ne prend pas en charge les interfaces graphiques. Vous obtiendrez une erreur si vous essayez d'exécuter explorer.exe.

Attachez un volume

  • Créez un dossier sur l'hôte pour servir de volume wwwroot
  • Créez un fichier index.html dans le dossier hôte wwwroot
    • Modifiez le fichier et ajoutez le code html de base hello world
  • Créer et démarrer un conteneur détaché, attacher un volume et mapper le port exposé à un port hôte spécifié
    • docker run -d -v wwwroot:c:inetpubwwwroot -p 8181:80 –name customsite mcr.microsoft.com/windows/servercore/iis
  • Afficher le site personnalisé
    • Parcourir jusqu'à localhost:8181
      • Remarquez que vous obtenez une erreur d'accès refusé
  • Modifier l'autorisation sur le dossier hôte wwwroot
    • Dans l'explorateur de fichiers, cliquez avec le bouton droit sur le dossier wwwroot -> Propriétés
    • Sur l'onglet Sécurité, cliquez sur modifier pour modifier les autorisations
    • Ajoutez l'utilisateur "Tout le monde"
    • Donnez l'autorisation de lecture à l'utilisateur Tout le monde
  • Afficher le site personnalisé
    • Parcourir jusqu'à localhost:8181
      • Affichez le code HTML de base hello world que vous avez créé

Cet exemple met en évidence l'un des problèmes de sécurité liés aux conteneurs et aux volumes de montage de liaison. L'application s'exécute à l'intérieur du conteneur en tant qu'utilisateur différent de celui de la machine hôte. Le paramètre de sécurité de l'hôte s'applique toujours au volume partagé. Jetez un œil au nom d'utilisateur de votre machine hôte et au conteneur

  • Afficher votre nom d'utilisateur
    • whoami
      • Vous devriez voir le nom de votre machinevotre nom d'utilisateur
      • Le mien est desktop-prfteric.sanner
  • Exécutez une commande pour démarrer un terminal PowerShell interactif
    • docker exec -it customsite powershell.exe
  • Afficher le nom d'utilisateur à l'intérieur du conteneur
    • whoami
      • Vous devriez voir le nom de l'utilisateur du conteneur
      • Le mien est usermanagercontaineradministrator

L'utilisateur containeradministrator n'a pas accès au contenu du dossier hôte. L'ajout de l'autorisation de tout le monde a résolu le problème rapidement. Dans un environnement de production, il serait plus sûr de créer un utilisateur spécifique à l'intérieur du conteneur et de donner à cet utilisateur des autorisations sur le dossier hôte.

Comme vous pouvez le voir, tout ce que nous avons appris jusqu'à présent en utilisant des conteneurs Linux s'applique aux conteneurs Windows. . N'hésitez pas à appliquer les rubriques précédentes telles que les variables d'environnement, les types de réseau, les réseaux définis par l'utilisateur, les noms d'hôte et les limites de ressources à vos conteneurs Windows.




Source link