Êtes-vous nouveau dans les images Docker Windows ? Travaillez-vous actuellement dans un environnement Windows et souhaitez-vous en apprendre davantage sur les constructions Docker pour les images de conteneurs ? Vous êtes au bon endroit. La meilleure façon d’apprendre quelque chose de nouveau est de le faire avec les commandes docker build
et docker build "tag"
!
Dans cet article, vous allez apprendre comment créer votre première image Docker Windows à partir d’un Dockerfile en utilisant la commande docker build
.
Commençons !
Compréhension des images de conteneurs Docker
Pendant des années, la seule façon de tester ou de développer sur plusieurs systèmes d’exploitation (OS) était d’avoir plusieurs machines physiques ou virtuelles dédiées avec l’image de la version de votre choix. Cette méthodologie nécessitait plus de matériel et de ressources pour provisionner de nouvelles machines pour chaque logiciel et spécification d’OS.
Cependant, de nos jours, l’utilisation des images de conteneurs Docker a augmenté en partie en raison de la popularité de l’architecture de micro-services. En réponse à la montée en popularité de Docker, Microsoft a commencé à soutenir publiquement les images Docker pour plusieurs produits phares sur leur page Docker Hub. Ils ont même ajouté la prise en charge native des images pour Windows en tant que fonctionnalité produit dans Windows 10 et Windows Server 2016 !
A Docker image is run on a container by using the Docker Engine. Docker images have many benefits such as portability (applicable to multiple environments and platforms), customizable, and highly scalable. As you can see below, unlike traditional virtual machines, the Docker engine runs on a layer between the host OS kernel and the isolated application services that are being containerized.

Compréhension de Docker Build et des images
La commande docker build
peut être utilisée pour automatiser la création d’images de conteneurs, adopter une pratique DevOps de conteneur en tant que code et intégrer la conteneurisation dans le cycle de développement de vos projets. Les Dockerfiles sont simplement des fichiers texte contenant des instructions de construction utilisées par Docker pour créer une nouvelle image de conteneur basée sur une image existante.
L’utilisateur peut spécifier l’image de base et la liste des commandes à exécuter lorsqu’une image de conteneur est déployée ou démarrée pour la première fois. Dans cet article, vous apprendrez comment créer une image docker basée sur Windows à partir d’un Dockerfile en utilisant un conteneur Windows.
Ce processus présente plusieurs avantages par rapport à l’utilisation d’une image de conteneur pré-construite :
- Vous pouvez reconstruire une image de conteneur pour plusieurs versions de Windows, ce qui est idéal pour tester les modifications de code sur plusieurs plateformes.
- Vous aurez plus de contrôle sur ce qui est installé dans le conteneur. Cela vous permettra de réduire la taille de votre conteneur au minimum.
- Pour des raisons de sécurité, vous voudrez peut-être vérifier le conteneur pour détecter les vulnérabilités et appliquer un renforcement de la sécurité à l’image de base
Prérequis/Exigences
Cet article est un guide pas à pas sur l’apprentissage de la construction d’une image Docker en utilisant un Dockerfile. Si vous souhaitez suivre, assurez-vous d’avoir les prérequis suivants en place.
- Docker pour Windows installé. Je vais utiliser la version 2.1.0.4 de Docker Community Edition (CE) dans mon environnement.
- L’accès à Internet est nécessaire pour télécharger les images Docker
- Système d’exploitation Windows 10+ (la version 1709 est utilisée pour ce tutoriel)
- Virtualisation imbriquée activée
- 5 Go d’espace disque libre sur votre machine locale
- PowerShell 5.0+
- Ce tutoriel utilise l’IDE Visual Studio Code. Cependant, n’hésitez pas à utiliser l’IDE de votre choix.
Note : Assurez-vous d’activer la configuration des conteneurs Windows lors de l’installation de Docker.
Préparation
Vous aurez d’abord besoin d’un dossier pour stocker toutes les images Docker et les conteneurs que vous allez construire à partir de ces images. Pour ce faire, ouvrez un terminal Powershell ou cmd (vous utiliserez PowerShell tout au long de cet article) et créez un nouveau répertoire appelé C:\Containers.
Une fois le dossier créé, déplacez-vous vers ce répertoire. Cela met le répertoire de travail actuel de la console par défaut à C:\Containers pour tous les téléchargements.
Dans cet article, vous obtiendrez un avant-goût. La plupart des fichiers nécessaires pour ce projet sont déjà disponibles. Une fois le dossier créé, exécutez un Git pull pour copier les fichiers nécessaires à cet article depuis le référentiel Github TechSnips vers le dossier C:\Containers. Une fois terminé, vérifiez que le dossier C:\Containers ressemble à ce qui suit.

Téléchargement de l’image Docker Windows IIS
La première tâche à effectuer est de télécharger une « template » ou une image de base. Vous construirez votre propre image Docker plus tard, mais d’abord, vous avez besoin d’une image pour commencer. Vous allez télécharger les dernières images de base IIS et Windows Server Core nécessaires à ce tutoriel. La liste mise à jour des images peut être trouvée sur la page d’image Docker officielle de Microsoft ici.
Examen des images de base Docker actuelles
Avant de télécharger l’image depuis le référentiel d’images, examinons d’abord les images de base Docker actuellement présentes sur votre système local. Pour ce faire, exécutez une console PowerShell en tant qu’administrateur et tapez docker images
. Cette commande renvoie toutes les images présentes sur votre système local.
Comme vous pouvez le voir ci-dessous, les images disponibles sont initialement vides.

Téléchargement de l’image de base
Il est maintenant temps de télécharger l’image de base IIS depuis Docker Hub. Pour ce faire, exécutez docker pull
comme indiqué ci-dessous. Ce processus peut prendre un certain temps pour se terminer en fonction de vos vitesses Internet.

Exécutez maintenant docker images
et vous devriez avoir la dernière image Microsoft Windows Core IIS disponible pour ce tutoriel.

Inspection du fichier Dockerfile
Dans une étape précédente, vous aviez téléchargé un fichier Dockerfile existant pour ce tutoriel. Jetons maintenant un coup d’œil à exactement ce que cela implique.
Ouvrez le fichier C:\Containers\Container1\Dockerfile dans votre éditeur préféré. Le contenu de ce Dockerfile est utilisé pour définir comment l’image du conteneur sera configurée lors de la construction.
Vous pouvez voir une explication de ce que chaque partie de ce fichier fait dans les commentaires en ligne.
Construction d’une nouvelle image Docker
Vous avez le Dockerfile prêt à l’emploi et une image IIS de base téléchargée. Maintenant, il est temps de construire votre nouvelle image Docker en utilisant le Dockerfile.
Pour construire une nouvelle image, utilisez la commande docker build "tag"
. Cette commande crée l’image. Pour cet article, vous pouvez voir ci-dessous que vous utilisez également l’option -t **
qui remplace la partie « tag ». Cette option vous permet de donner un nom convivial à votre nouvelle image et de référencer également le Dockerfile en spécifiant le chemin du dossier où il se trouve.
Vous pouvez voir ci-dessous un exemple de vérification que la console se trouve dans le répertoire C:\Containers, puis de construction d’une nouvelle image à partir du Dockerfile dans le répertoire C:\Containers\Container1.
Une fois démarrée, vous pouvez suivre la progression de la commande alors qu’elle parcourt chaque instruction du fichier docker ligne par ligne:

Une fois terminé, vous devriez maintenant avoir une nouvelle image Docker!
Maintenant, exécutez la commande docker images
pour afficher les images disponibles. Vous pouvez voir ci-dessous un exemple de l’image container1 créée.

Remarque: La commande
docker build —help
est un paramètre utile pour afficher des informations détaillées sur la commande docker en cours d’exécution.
Exécution du conteneur Docker
À ce stade, vous devriez avoir une nouvelle image créée. Il est temps de démarrer un conteneur en utilisant cette image. Pour démarrer un nouveau conteneur, utilisez la commande docker run
.
La commande docker run
lancera un nouveau conteneur Docker basé sur l’image container1 que vous avez créée précédemment. Vous pouvez voir un exemple ci-dessous.
Remarquez que le paramètre -d
est utilisé. Cela indique au runtime Docker de démarrer l’image en mode détaché, puis de quitter lorsque le processus racine utilisé pour exécuter le conteneur se termine.
Lorsque docker run
est terminé, il renvoie l’ID du conteneur créé. L’exemple ci-dessous capture cet ID dans une variable $containerID
afin que nous puissions facilement y faire référence ultérieurement.

Une fois le conteneur démarré, exécutez maintenant la commande docker ps
. Cette commande vous permet de voir quels conteneurs utilisent actuellement chaque image. Remarquez ci-dessous que l’image en cours d’exécution a automatiquement généré un pseudonyme (busy_habit dans ce cas). Ce pseudonyme est parfois utilisé à la place de l’ID du conteneur pour gérer le conteneur.

Exécution de code à l’intérieur d’un conteneur Docker
A new container is built from a new image you just created. Let’s now start actually using that container to run code. Running code inside of a Docker container is done using the docker exec
command.
Dans cet exemple, exécutez docker exec
pour afficher la sortie PowerShell de la commande Get-ChildItem
dans le conteneur en utilisant la syntaxe de commande ci-dessous. Cela garantira que les instructions dans le Dockerfile pour supprimer les fichiers IIS par défaut ont réussi.
Vous pouvez voir ci-dessous que le seul fichier qui existe est index.html, ce qui signifie que les fichiers par défaut ont été supprimés.

Maintenant, exécutez la commande ipconfig
dans le conteneur pour obtenir l’adresse IP locale de l’image du conteneur afin que vous puissiez essayer de vous connecter au site Web IIS.
Vous pouvez voir ci-dessous que ipconfig
a été exécuté dans le conteneur comme s’il était exécuté sur votre ordinateur local et a retourné toutes les informations IP.

ipconfig
in a Docker containerInspection du site Web IIS
Maintenant, il est temps de révéler les fruits de votre travail ! Il est temps de voir si le serveur IIS fonctionnant dans le conteneur Docker sert correctement la page index.html.
Ouvrez un navigateur et collez l’adresse IP4 trouvée via ipconfig
dans la barre d’adresse. Si tout va bien, vous devriez voir un message Hello World!! comme ci-dessous.

Examen de l’historique Docker
Une commande utile à utiliser lors du travail avec des conteneurs Docker est la commande docker history
. Bien que cela ne soit pas nécessairement lié à la création d’une image ou d’un conteneur lui-même, la commande docker history
est une commande utile qui vous permet de passer en revue les modifications apportées à l’image du conteneur.
Vous pouvez voir ci-dessous que docker history
renvoie toutes les activités Dockerfile et PowerShell effectuées sur le conteneur container1 avec lequel vous avez travaillé.

docker history
Nettoyage des images Docker en cours d’exécution
Les étapes ci-dessous sont utilisées pour nettoyer tous les conteneurs arrêtés qui s’exécutent sur votre machine. Cela libérera de l’espace disque et des ressources système.
Exécutez la commande docker ps
pour afficher une liste des conteneurs en cours d’exécution sur votre système :

Maintenant, arrêtez les conteneurs en cours d’exécution à l’aide de la commande docker stop
:

Enfin, vous pouvez supprimer définitivement les conteneurs arrêtés à l’aide de la commande docker system prune
.
