Ă la fin de cette page, tu seras capable de :
docker runOuvre PowerShell en administrateur et exécute :
wsl --install
Redémarre le PC si demandé.
Télécharge l'installeur sur : docker.com/products/docker-desktop
Lance l'installeur et coche "Use WSL 2 instead of Hyper-V".
Ouvre un terminal (PowerShell ou CMD) et tape :
docker --version
docker run hello-world
Si tu vois Hello from Docker!, c'est bon ! đ
đĄ L'interface graphique Docker Desktop est dĂ©taillĂ©e dans l'article suivant.
# Télécharger une image depuis Docker Hub
docker pull nginx
# Lister les images locales
docker images
# Supprimer une image
docker rmi nginx
# Lancer un conteneur (télécharge l'image si besoin)
docker run nginx
# Lancer en arriĂšre-plan (-d = detached)
docker run -d nginx
# Lancer avec un nom et un port (hĂŽte:conteneur)
docker run -d --name mon-serveur -p 8080:80 nginx
# Lister les conteneurs actifs
docker ps
# Lister TOUS les conteneurs (actifs + arrĂȘtĂ©s)
docker ps -a
# ArrĂȘter un conteneur
docker stop mon-serveur
# Supprimer un conteneur
docker rm mon-serveur
# ArrĂȘter ET supprimer automatiquement (--rm)
docker run --rm -p 8080:80 nginx
# Voir les logs d'un conteneur
docker logs mon-serveur
# Logs en temps réel (suivi)
docker logs -f mon-serveur
# Ouvrir un terminal dans un conteneur actif
docker exec -it mon-serveur bash
# Inspecter les détails d'un conteneur
docker inspect mon-serveur
# Supprimer tous les conteneurs arrĂȘtĂ©s
docker container prune
# Supprimer toutes les images inutilisées
docker image prune
# Nettoyage global (images, conteneurs, réseaux non utilisés)
docker system prune
# Démarrer tous les services (en arriÚre-plan)
docker compose up -d
# ArrĂȘter tous les services
docker compose down
# Voir les logs de tous les services
docker compose logs -f
# Reconstruire les images et redémarrer
docker compose up -d --build
Objectif : Lancer un serveur web Nginx en une commande et y accéder depuis ton navigateur.
Nginx est un serveur web trÚs utilisé en production. Normalement, l'installer sous Windows est compliqué. Avec Docker, c'est une seule commande.
1. Ouvre un terminal PowerShell.
2. Lance le conteneur :
docker run -d --name mon-nginx -p 8080:80 nginx
Décortiquons cette commande :
| Argument | Signification |
|---|---|
run |
Crée et démarre un conteneur |
-d |
En arriĂšre-plan (detached) |
--name mon-nginx |
Donne un nom au conteneur |
-p 8080:80 |
Redirige le port 8080 de ta machine vers le port 80 du conteneur |
nginx |
Le nom de l'image à utiliser (téléchargée depuis Docker Hub) |
3. Ouvre ton navigateur et va sur : http://localhost:8080
Tu devrais voir la page de bienvenue de Nginx â
4. Vérifie que le conteneur tourne :
docker ps
5. Lis les logs du serveur :
docker logs mon-nginx
Recharge la page du navigateur et regarde les logs se mettre Ă jour.
6. ArrĂȘte et supprime le conteneur :
docker stop mon-nginx
docker rm mon-nginx
--name ?Objectif : Lancer un serveur MySQL complet via Docker, s'y connecter et créer une base de données.
Tu connais MySQL depuis tes cours. L'installer sur un PC prend du temps et "pollue" le systĂšme. Avec Docker, tu lances une instance MySQL propre en quelques secondes, que tu peux supprimer aprĂšs utilisation.
1. Lance MySQL dans un conteneur :
docker run -d \
--name mon-mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=motdepasse \
-e MYSQL_DATABASE=mabase \
mysql:8.0
Note Windows : Sur PowerShell, remplace les
\par des backticks`pour les retours à la ligne, ou écris tout sur une seule ligne.
Décortiquons les nouveaux arguments :
| Argument | Signification |
|---|---|
-p 3306:3306 |
Expose le port MySQL standard |
-e MYSQL_ROOT_PASSWORD=motdepasse |
Variable d'environnement : mot de passe root |
-e MYSQL_DATABASE=mabase |
Crée automatiquement une base "mabase" au démarrage |
mysql:8.0 |
Image MySQL version 8.0 |
2. Attends quelques secondes que MySQL démarre. Surveille les logs :
docker logs -f mon-mysql
Quand tu vois ready for connections, appuie sur Ctrl+C pour quitter les logs.
3. Connecte-toi à MySQL depuis l'intérieur du conteneur :
docker exec -it mon-mysql mysql -u root -pmotdepasse
Tu es maintenant dans le shell MySQL.
4. Teste quelques commandes :
SHOW DATABASES;
USE mabase;
CREATE TABLE eleves (id INT AUTO_INCREMENT PRIMARY KEY, nom VARCHAR(100));
INSERT INTO eleves (nom) VALUES ('Alice'), ('Bob');
SELECT * FROM eleves;
EXIT;
5. Connecte-toi aussi depuis MySQL Workbench ou HeidiSQL sur ta machine hĂŽte :
127.0.0.13306rootmotdepasse6. Supprime le conteneur :
docker stop mon-mysql
docker rm mon-mysql
Recrée le conteneur et retourne voir la table eleves. Elle a disparu. C'est normal : sans volume, les données ne sont pas persistées.
Pour garder les données, on utilise un volume :
docker run -d \
--name mon-mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=motdepasse \
-v mysql_data:/var/lib/mysql \
mysql:8.0
Le -v mysql_data:/var/lib/mysql crée un volume nommé mysql_data qui survit à la suppression du conteneur. Les volumes sont détaillés dans un article dédié plus loin.
Objectif : Lancer deux services qui coopĂšrent (MySQL + phpMyAdmin) avec un seul fichier de configuration.
Dans la vraie vie, les applications ont souvent besoin de plusieurs services. Docker Compose permet de les définir ensemble, de gérer leur démarrage dans l'ordre, et de les faire communiquer sur un réseau interne.
đĄ Cet exercice est un avant-goĂ»t de Compose. La syntaxe complĂšte est dĂ©taillĂ©e dans l'article dĂ©diĂ© plus loin dans le chapitre.
1. Crée un dossier docker-mysql-lab sur ton Bureau.
2. Dans ce dossier, crée un fichier docker-compose.yml :
services:
# Service 1 : la base de données MySQL
db:
image: mysql:8.0
container_name: lab_mysql
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: monprojet
MYSQL_USER: dev
MYSQL_PASSWORD: devpass
volumes:
- mysql_data:/var/lib/mysql
networks:
- lab_network
# Service 2 : phpMyAdmin pour gérer la base via navigateur
phpmyadmin:
image: phpmyadmin:latest
container_name: lab_phpmyadmin
restart: unless-stopped
ports:
- "8080:80"
environment:
PMA_HOST: db # Le nom du service MySQL dans le réseau Docker
PMA_PORT: 3306
depends_on:
- db
networks:
- lab_network
# Déclaration du volume persistant
volumes:
mysql_data:
# Déclaration du réseau interne
networks:
lab_network:
3. Ouvre un terminal dans ce dossier et lance tout :
docker compose up -d
Docker va :
lab_networkmysql_datadepends_on)4. Ouvre http://localhost:8080 dans ton navigateur.
Connecte-toi avec :
dbrootsecret5. Crée une table, insÚre des données.
6. ArrĂȘte les services :
docker compose down
Relance avec docker compose up -d. Tes données sont toujours là grùce au volume.
7. Pour tout supprimer y compris les volumes :
docker compose down -v
8888:80 et relance| Commande | Action |
|---|---|
docker pull <image> |
Télécharger une image |
docker run -d -p X:Y <image> |
Lancer un conteneur |
docker ps |
Voir les conteneurs actifs |
docker stop <nom> |
ArrĂȘter un conteneur |
docker rm <nom> |
Supprimer un conteneur |
docker logs <nom> |
Voir les journaux |
docker exec -it <nom> bash |
Entrer dans un conteneur |
docker compose up -d |
Démarrer les services Compose |
docker compose down |
ArrĂȘter les services Compose |