Docker s’apprend en pratiquant. Avec une vingtaine de commandes, vous savez déjà lancer une application, la diagnostiquer, construire votre propre image et assembler plusieurs services. Les voici, dans l’ordre où vous en aurez besoin.
Image ou conteneur ?
Une image est un modèle en lecture seule (l’application et tout ce qu’il lui faut). Un conteneur est une instance en cours d’exécution de cette image. On peut lancer dix conteneurs à partir de la même image.
Lancer et observer
docker run -d --name web -p 8080:80 nginx # lancer en arrière-plan, port 8080 de l’hôte vers 80
docker ps # conteneurs en cours
docker ps -a # tous les conteneurs, même arrêtés
docker logs -f web # suivre les journaux
docker exec -it web sh # ouvrir un shell dans le conteneur
docker stats # consommation en direct
Arrêter et nettoyer
docker stop web
docker start web
docker rm web # supprimer le conteneur
docker system prune # supprimer ce qui n’est plus utilisé
Gérer les images
docker pull redis:7
docker images
docker rmi redis:7
Précisez toujours une version (redis:7) plutôt que latest : vos déploiements restent reproductibles.
Construire sa propre image
# Dockerfile
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]
docker build -t monapp:1.0 .
docker run -d -p 5000:5000 monapp:1.0
Conserver les données : les volumes
docker volume create donnees
docker run -d --name db -v donnees:/var/lib/postgresql/data -e POSTGRES_PASSWORD=secret postgres:16
docker volume ls
Sans volume, les données disparaissent avec le conteneur.
Faire communiquer les conteneurs : les réseaux
docker network create appnet
docker run -d --name db --network appnet postgres:16
docker run -d --name web --network appnet monapp:1.0 # « db » est joignable par son nom
Assembler plusieurs services : Docker Compose
# compose.yaml
services:
web:
build: .
ports: ["5000:5000"]
depends_on: [db]
db:
image: postgres:16
environment:
POSTGRES_PASSWORD: secret
volumes: ["donnees:/var/lib/postgresql/data"]
volumes:
donnees:
docker compose up -d
docker compose logs -f
docker compose down
Trois bonnes habitudes
- Un conteneur = un processus principal. Séparez l’application et la base de données.
- Ne mettez jamais de mot de passe dans une image : passez-le par des variables d’environnement ou des secrets.
- Ajoutez un fichier
.dockerignorepour ne pas copier inutilement.gitounode_modulesdans l’image.
Aller plus loin avec la formation vidéo
La formation reprend ces commandes en atelier : images, Dockerfile, volumes, réseaux et Docker Compose, en 23 leçons vidéo.
Découvrir la formation « Workshop conteneurisation avec Docker »
