Docker: quelques bonnes pratiques!
Quelques exercices sur les bonnes pratiques avec Docker: limitation de ressources, healthcheck, logging...
Les exercices utiliserons le docker-compose.yml suivant:
version: "3.7"
services:
db:
container_name: db
image: postgres:9.4
environment:
POSTGRES_USER: "postgres"
POSTGRES_PASSWORD: "postgres"
redis:
container_name: redis
image: redis:alpine
result:
container_name: result
image: crafteo/example-voting-app-result
ports:
- "5001:80"
- "5858:5858"
vote:
container_name: vote
image: crafteo/example-voting-app-vote
ports:
- "5000:80"
worker:
container_name: worker
image: crafteo/example-voting-app-worker
Exercices
Se documenter sur les méthodes de limitation de ressources pour les containers Docker puis modifier le docker-compose.yml pour limiter la consommation de chaque service:
- Maximum de 0.2 CPU et 256Mo RAM par service
- Réservation de 0.1 CPU 128Mo de RAM par service
Note: Docker Compose v3 ignore par défaut les paramètres deploy.resources qui sont réservés à Docker Swarm. Pour les prendre en compte, utiliser --compatibility ou un fichier compose version: "2"
Docker permet de configurer des drivers de Logging. Faire quelques recherches sur les configuration de logging possible avec Docker puis:
- Lancer un container
fluent/fluentdécoutant montant le volume/tmp/docker-logs:/fluentd/logdocker run -d --rm --name fluentd -v /tmp/docker-logs:/fluentd/log fluent/fluentd - Configurer le service
dbpour utiliser le driverfluentdafin d'envoyer les logs vers le containerfluentd- Utiliser
docker inspectpour obtenir l'IP du containerfluentd - Ne pas utiliser le nom du container directement qui ne sera pas reconnu
- Utiliser
- Lancer la stack ainsi configurée
Vérifier l'existence des logs dans /tmp/docker-logs