https://cyberinstitut.fr/utiliser-docker-sous-windows-guide-debutants/
Docker - Présentation
Docker est devenu un outil incontournable pour les développeurs et les administrateurs système travaillant dans des environnements de développement variés. Sous Windows, Docker permet de simplifier la gestion des applications en les conteneurisant, ce qui facilite la portabilité et l’efficacité.
Comment installer Docker sur Windows
Téléchargez Docker Desktop pour Windows depuis le site officiel. Assurez-vous que votre système répond aux exigences minimales (Windows 10 64-bit: Pro, Enterprise, ou Education). Exécutez le fichier d’installation et suivez les instructions à l’écran. Après l’installation, redémarrez votre ordinateur pour finaliser l’installation. Une fois Docker installé, vous pouvez vérifier son bon fonctionnement en lançant l’application Docker Desktop, qui devrait afficher l’état “running” si tout est correctement configuré.
Configuration initiale de Docker
Pour commencer à utiliser Docker sur Windows, une configuration initiale est nécessaire. Cela inclut la configuration de certaines fonctionnalités de Windows, comme le sous-système Linux pour Windows (WSL 2), et l’adaptation des paramètres de Docker pour optimiser les performances. Consultez la documentation officielle pour des directives précises et adaptées à votre version de Windows.
Utilisation basique de Docker
Une fois Docker installé, configuré et lancé, vous pouvez commencer à l’utiliser pour lancer vos premiers conteneurs. Voici les commandes de base :
- docker run : lance un conteneur à partir d’une image.
- docker pull : télécharge une image depuis un registre Docker.
- docker build : crée une image à partir d’un Dockerfile.
- docker images : liste toutes les images locales.
- docker ps : liste tous les conteneurs en cours d’exécution.
Chaque commande vous permet d’interagir avec Docker et de gérer vos conteneurs de manière efficace.
Premier conteneur : affichage d'un message pendant 1 minute
Nous allons crée un conteneur pour une application php simple : l'affichage d'un message pendant 1 minute.
Attention: Faire un compte-rendu de TP qui commence par rappeler le rôle et les avantages de Docker
- Créer un dossier ProjetDocker et un sous-dossier Projet1
- Dans ce sous-dossier créer le fichier index.php qui affiche d'un message pendant 1 minute (remarque : vous n'êtes pas sur votre serveur php donc le fichier ne peut pas s'éxécuter !)
- créer le Dockerfile qui contient le code suivant (à nommer exactement comme ça, sans extension) :
# Utiliser l'image officielle PHP comme base FROM php:8.1-cli # Créer un dossier pour l'application dans le conteneur WORKDIR /var/www/html # Copier les fichiers PHP dans le conteneur COPY . /var/www/html # Lancer le fichier PHP CMD ["php", "index.php"]
- Construire l'image Docker en ligne de commande :
docker build -t php-docker-demo .
- Vous devez voir l'image dans Docker Desktop
- Exécuter le conteneur :
docker run php-docker-demo
/ Exécuter en arrière-plan :docker run -d php-docker-demo
- le message prévu s'affiche pendant 1 minute
- Re-exécuter le conteneur, regarder dans Docker Desktop, combien d'images avez-vous ? combien de conteneurs avez-vous ?
- Gérer les conteneurs en ligne de commande :
- Liste les conteneurs en cours d'exécution :
docker ps
- Arrête un conteneur :
docker stop <ID_du_conteneur>
- Supprime un conteneur (après l'avoir arrêté) :
docker rm <ID_du_conteneur>
Note: A retenir : rôle du Dockerfile, rôle d'une image, d'un conteneur
Deuxième conteneur : application php avec bd
- créer un sous-dossier Projet2
- Placer une application PHP existante dans ce dossier (exemple TopChrono)
Conteneuriser l'application
- Créer le Dockerfile :
# Utiliser l'image officielle PHP avec Apache FROM php:8.1-apache # Activer les extensions PHP nécessaires (exemple : mysqli pour MySQL) RUN docker-php-ext-install mysqli pdo pdo_mysql # Copier tous les fichiers de l'application dans le dossier web de Apache COPY . /var/www/html # Donner les bons droits RUN chown -R www-data:www-data /var/www/html # Exposer le port 80 pour Apache EXPOSE 80 # Lancer Apache au démarrage CMD ["apache2-foreground"]
- pour gérer mysql, ajouter un fichier docker-compose.yml :
version: "3.8" services: web: build: . container_name: mon-site-php ports: - "8080:80" volumes: - .:/var/www/html depends_on: - db db: image: mysql:8.0 container_name: mysql-db restart: always environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: my_database MYSQL_USER: user MYSQL_PASSWORD: password volumes: - mysql_data:/var/lib/mysql volumes: mysql_data:
- Construire et démarrer les conteneurs :
docker-compose up –build -d
- L'application sera disponible sur http://localhost:8080
- si vous lancer votre serveur de bd l'application doit fonctionner normalement
Conteneuriser la base de données
- Copier le script de création de la base de données(database.sql) dans le dossier précédent et dans le conteneur précédent :
docker cp database.sql mysql-db:/database.sql
- le script doit contenir : création de la bd, des tables, insertion des données, les contraintes, la création de l'utilisatuer et ses droits
- Modifier le docker-compose pour mettre à jour les variables d'environnement MYSQL
- Accèder au conteneur MySQL :
docker exec -it mysql-db mysql -u root -p
(Entrer root comme mot de passe) - Exécuter la commande pour importer la base :
SOURCE /database.sql;
- Modifier la connexion à la bd : mettre db (nom du service Docker défini dans docker-compose.yml) à la place de l'adresse ip du serveur de données
- Reconstruire et démarrer les conteneurs :
docker-compose up –build -d
- Vérifier les conteneurs actifs :
docker ps
- on devrait voir le site web et mysql en cours d'exécution
- dans le navigateur : http://localhost:8080
- l'application PHP doit fonctionner avec Apache et MySQL dans Docker
Note: A retenir : décrire ligne à ligne le Dockerfile et le docker-compose, préciser le rôle de ce dernier fichier