retour
01/04
section 01

Conteneurs vs machines virtuelles

Connectez-vous pour sauvegarder votre progression et acceder aux quiz
Se connecter

Docker est une plateforme de conteneurisation qui permet de packager une application avec toutes ses dependances dans un conteneur leger et portable. Contrairement aux machines virtuelles, les conteneurs partagent le noyau du systeme hote, ce qui les rend beaucoup plus legers et rapides.

Comparaison VM vs Conteneur

CritereMachine VirtuelleConteneur Docker
TaillePlusieurs GoQuelques Mo
DemarrageMinutesSecondes
IsolationComplete (OS entier)Processus isole
PerformanceOverhead importantQuasi-native
PortabiliteDependante de l'hyperviseurFonctionne partout

Pourquoi Docker pour le developpement web ?

1."Ca marche sur ma machine" : Docker garantit que l'environnement est identique partout (dev, staging, production)
2.Pas d'installation complexe : plus besoin d'installer PHP, MySQL, Redis, etc. sur votre machine
3.Multi-projets : chaque projet peut avoir sa propre version de PHP, sa propre base de donnees
4.Onboarding rapide : un nouveau developpeur demarre en 5 minutes avec docker compose up

Installation de Docker

bash# Linux (Ubuntu/Debian)
sudo apt update
sudo apt install docker.io docker-compose-v2
sudo usermod -aG docker $USER
# Se deconnecter/reconnecter pour appliquer le groupe

# Verifier l'installation
docker --version
docker compose version

# Tester avec Hello World
docker run hello-world

Concepts fondamentaux

Image : un template en lecture seule contenant l'OS, les dependances et le code. C'est la "recette" du conteneur.
Conteneur : une instance en cours d'execution d'une image. C'est le "gateau" fabrique a partir de la recette.
Dockerfile : le fichier qui decrit comment construire une image.
Registry : un depot d'images (Docker Hub, GitHub Container Registry).
bash# Telecharger une image depuis Docker Hub
docker pull php:8.3-fpm

# Lister les images locales
docker images

# Lancer un conteneur
docker run -d --name mon-php php:8.3-fpm
# -d : detached (en arriere-plan)
# --name : nom du conteneur

# Lister les conteneurs en cours
docker ps

# Lister tous les conteneurs (y compris arretes)
docker ps -a

# Arreter un conteneur
docker stop mon-php

# Supprimer un conteneur
docker rm mon-php

# Supprimer une image
docker rmi php:8.3-fpm