Docker & Docker Compose
Le guide de survie

Docker est une plateforme de conteneurisation permettant de créer, déployer et exécuter des applications dans des conteneurs légers et portables. Il garantit la cohérence entre les environnements de développement, de test et de production.
Cheat Sheet docker
Commande | Description |
---|---|
docker version |
Affiche la version de Docker installée |
docker info |
Informations système sur Docker |
docker pull <image> |
Télécharge une image depuis Docker Hub |
docker build -t <nom>:<tag> . |
Construit une image à partir d’un Dockerfile |
docker images |
Liste les images locales |
docker rmi <image> |
Supprime une image |
docker run <image> |
Lance un conteneur à partir d’une image |
docker run -it <image> bash |
Lance un conteneur en mode interactif avec un shell |
docker ps |
Liste les conteneurs en cours d’exécution |
docker ps -a |
Liste tous les conteneurs (actifs ou non) |
docker stop <container> |
Arrête un conteneur |
docker start <container> |
Démarre un conteneur existant |
docker rm <container> |
Supprime un conteneur |
docker exec -it <container> bash |
Exécute une commande dans un conteneur actif |
docker logs <container> |
Affiche les logs d’un conteneur |
docker network ls |
Liste les réseaux Docker |
docker volume ls |
Liste les volumes Docker |
docker system prune |
Nettoie les ressources inutilisées (dangereux) |
Docker Compose est un outil permettant de définir et de gérer des applications multi-conteneurs avec un simple fichier docker-compose.yml
. Il facilite l’orchestration locale d’environnements complexes.
Cheat Sheet docker-compose
Commande | Description |
---|---|
docker-compose version |
Affiche la version de Docker Compose |
docker-compose up |
Démarre les services définis dans docker-compose.yml |
docker-compose up -d |
Démarre les services en arrière-plan |
docker-compose down |
Arrête et supprime les conteneurs, réseaux, etc. |
docker-compose build |
Construit les images |
docker-compose ps |
Liste les services actifs |
docker-compose logs |
Affiche les logs des services |
docker-compose exec <service> bash |
Exécute une commande dans un conteneur |
docker-compose stop |
Arrête les services |
docker-compose start |
Redémarre les services arrêtés |
docker-compose restart |
Redémarre les services |
docker-compose config |
Valide et affiche la configuration finale |
-# Exemple de docker-compose.yml
Ce fichier docker-compose.yml
met en place une stack multi-conteneurs avec :
- Un serveur Flask (Python) pour une API
- Une base de données PostgreSQL
- Un Nginx en reverse proxy
docker-compose.yml
version: '3.8' # Version du format Docker Compose
services:
web:
build: ./web # Construit l'image à partir du Dockerfile situé dans ./web
container_name: flask_app
restart: always # Redémarre automatiquement le conteneur en cas de crash
ports:
- "5000:5000" # Redirige le port 5000 de l'hôte vers le conteneur
volumes:
- ./web:/app # Monte le code source dans le conteneur (pratique en dev)
environment:
- DATABASE_URL=postgres://user:password@db:5432/mydb
depends_on:
- db # Assure que "db" est lancé avant "web"
db:
image: postgres:14-alpine
container_name: postgres_db
restart: always
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: mydb
volumes:
- db_data:/var/lib/postgresql/data # Persistance des données
nginx:
image: nginx:alpine
container_name: nginx_proxy
restart: always
ports:
- "80:80" # Expose le serveur web
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro # Configuration custom de Nginx
depends_on:
- web
volumes:
db_data: # Déclare un volume nommé pour PostgreSQL
Arborescence du projet
.
├── docker-compose.yml
├── web
│ ├── Dockerfile
│ └── app.py
├── nginx
│ └── nginx.conf
Exemple de web/Dockerfile
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt ./
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]
Exemple de web/app.py
from flask import Flask
import os
app = Flask(__name__)
@app.route('/')
def hello():
return 'Hello from Flask behind Nginx!'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
Exemple de nginx/nginx.conf
events {}
http {
server {
listen 80;
location / {
proxy_pass http://web:5000; # Le nom du service "web" fait office de DNS interne
}
}
}
Démarrage
docker-compose up --build
Nettoyage
docker-compose down -v # Supprime conteneurs + volumes