Lab 3 - Dockerfile Linux vs Dockerfile Windows
Dans ce laboratoire, vous allez créer :
- Un Dockerfile Linux basé sur Ubuntu, qui exécute des outils sur Linux.
- Un Dockerfile Windows basé sur Windows Server Core, qui exécute des outils Microsoft.
Ce lab démontre que :
- Un conteneur Linux ne peut exécuter que des binaires Linux.
- Un conteneur Windows ne peut exécuter que des binaires Windows à moins d’utiliser WSL.
- Docker utilise le noyau du système hôte pour exécuter les conteneurs.
Dockerfile Linux (Ubuntu)
1. Créez un dossier de travail
2. Créez un fichier Dockerfile
3. Construisez l’image
4. Lancez un conteneur
5. Testez des outils Linux dans le conteneur
Dans le conteneur :
6. Sur le host Ubuntu, ouvrez un autre terminal et exécutez :
7. Supprimer le conteneur
8. Sur le host Ubuntu, refait
Quel est le résultat ? (Faites une capture d’écran et collez l’image dans votre journal)
Dockerfile Windows (Windows Server Core)
Cette partie doit être faite dans votre VM Windows avec Docker Desktop configuré en mode Windows Containers.
Basculer vers les conteneurs Windows
Pour utiliser Windows et non wsl comme environnement host, il faut passer Docker Desktop en mode conteneurs Windows :
Faites un clic droit sur l’icône Docker Desktop dans la zone de notification (en bas à droite de la barre des tâches Windows, près de l’horloge).
Cliquez sur “Switch to Windows containers…” (Basculez vers les conteneurs Windows).
Ensuite
Ouvrez Docker Desktop.
Cliquez sur l’icône d’engrenage Settings (Paramètres) en haut à droite.
Allez dans la section Docker Engine.
Dans le fichier JSON de configuration, ajoutez ou modifiez la clé “exec-opts” :
1. Créer un dossier de travail et ouvrir VSCode
2. Créez un fichier Dockerfile
3. Construisez l’image
4. Lancez un conteneur
5. Testez des outils Windows
Dans le conteneur :
6. Testez un outil Linux (échec attendu)
Toujours dans le conteneur :
7. Sur l’host Windows, ouvrez le Gestionnaire des tâches :
- Ctrl + Shift + Esc
- Onglet Processes
- Cherchez notepad.exe
- ou dans une nouvelle fenêtre terminale
- Get-Process notepad
Quel est le résultat du point 5 et 6 ? (Faites une capture d’écran et collez l’image dans votre journal)
Questions à remettre dans votre journal
- Quelle commande permet de construire une image Docker ?
- Pourquoi le conteneur Windows ne peut-il pas exécuter
bash? - Est-ce que Docker émule un OS ?
- Dans vos mots, quel est le rôle du noyau de l’host dans l’exécution d’un conteneur ?
- Quelle est la différence fondamentale entre une vm et un conteneur ?
- N’oubliez pas de mettre les captures d’écran demandées plus haut.