Introduction à Docker
Docker est une plateforme de conteneurisation qui permet d’empaqueter des applications avec toutes leurs dépendances dans des conteneurs isolés.
Pourquoi Docker ?
Section intitulée « Pourquoi Docker ? »- Portabilité : “Ça marche sur ma machine” → Ça marche partout
- Isolation : Chaque conteneur est indépendant
- Efficacité : Plus léger que les machines virtuelles
- Reproductibilité : Environnements identiques dev/prod
Concepts clés
Section intitulée « Concepts clés »┌─────────────────────────────────────────┐│ Docker Engine │├─────────────┬─────────────┬────────────┤│ Conteneur 1 │ Conteneur 2 │ Conteneur 3││ (App Node) │ (App Python)│ (Database) │├─────────────┴─────────────┴────────────┤│ Images Docker │├─────────────────────────────────────────┤│ Système d'exploitation │└─────────────────────────────────────────┘Installation
Section intitulée « Installation »Ubuntu/Debian
Section intitulée « Ubuntu/Debian »# Ajouter le dépôt Dockercurl -fsSL https://get.docker.com -o get-docker.shsudo sh get-docker.sh
# Ajouter l'utilisateur au groupe dockersudo usermod -aG docker $USERWindows/macOS
Section intitulée « Windows/macOS »Téléchargez Docker Desktop.
Commandes essentielles
Section intitulée « Commandes essentielles »Gestion des images
Section intitulée « Gestion des images »# Télécharger une imagedocker pull nginx:latest
# Lister les imagesdocker images
# Supprimer une imagedocker rmi nginx:latestGestion des conteneurs
Section intitulée « Gestion des conteneurs »# Lancer un conteneurdocker run -d --name mon-nginx -p 8080:80 nginx
# Lister les conteneursdocker ps # En coursdocker ps -a # Tous
# Arrêter / Démarrerdocker stop mon-nginxdocker start mon-nginx
# Supprimerdocker rm mon-nginxDockerfile
Section intitulée « Dockerfile »Un Dockerfile définit comment construire une image :
# Image de baseFROM node:20-alpine
# Répertoire de travailWORKDIR /app
# Copier les fichiers de dépendancesCOPY package*.json ./
# Installer les dépendancesRUN npm ci --only=production
# Copier le code sourceCOPY . .
# Exposer le portEXPOSE 3000
# Commande de démarrageCMD ["node", "server.js"]Construire et lancer :
# Construire l'imagedocker build -t mon-app:1.0 .
# Lancer le conteneurdocker run -d -p 3000:3000 mon-app:1.0Docker Compose
Section intitulée « Docker Compose »Pour orchestrer plusieurs conteneurs, utilisez docker-compose.yml :
version: '3.8'
services: web: build: . ports: - "3000:3000" environment: - NODE_ENV=production - DATABASE_URL=postgres://db:5432/app depends_on: - db
db: image: postgres:15 volumes: - postgres_data:/var/lib/postgresql/data environment: - POSTGRES_DB=app - POSTGRES_USER=user - POSTGRES_PASSWORD=secret
volumes: postgres_data:# Démarrer tous les servicesdocker compose up -d
# Voir les logsdocker compose logs -f
# Arrêterdocker compose down