Principales commandes Docker – regroupées par catégorie pour faciliter la consultation au quotidien.
1. Gestion des images
docker pull <image>– télécharge une image depuis Docker Hub (ou registry).docker images– liste les images locales.docker rmi <image>– supprime une image.docker build -t <nom>:<tag> .– crée une image à partir duDockerfiledans le répertoire courant.docker tag <image> <repo>:<tag>– renomme/tagge une image.docker push <repo>:<tag>– envoie l'image vers le registry.
2. Containers (exécution)
docker run <image> – crée et exécute un container. Options principales :
| Flag | Ce qu'il fait |
|---|---|
-d |
Exécute en arrière-plan (detached) |
-p 8080:80 |
Mappe le port hôte:container |
--name monapp |
Définit le nom du container |
-v /hôte:/container |
Monte un volume |
docker ps– liste les containers en cours d'exécution.docker ps -a– liste tous les containers (actifs et arrêtés).docker stop <id|nom>– arrête un container.docker start <id|nom>– démarre un container arrêté.docker restart <id|nom>– redémarre un container.docker rm <id|nom>– supprime un container.
3. Logs, shell et inspection
docker logs <id|nom>– affiche les logs du container.docker logs -f <id|nom>– suit les logs en temps réel (tail -f).docker exec -it <id|nom> sh– ouvre un shell interactif dans le container.docker inspect <id|nom>– affiche les détails complets en JSON.docker stats– surveille l'utilisation CPU et mémoire en temps réel.
4. Volumes et données
docker volume ls– liste les volumes.docker volume create <nom>– crée un volume.docker volume rm <nom>– supprime un volume.docker system df– affiche l'utilisation disque (images, containers, volumes).
5. Réseaux
docker network ls– liste les réseaux.docker network create <nom>– crée un réseau.docker network inspect <nom>– affiche les détails du réseau.docker network connect <réseau> <container>– connecte le container au réseau.docker network disconnect <réseau> <container>– déconnecte le container du réseau.
6. Nettoyage (housekeeping)
docker system prune– supprime les containers arrêtés, réseaux et images non utilisés.docker system prune -a– idem, y compris toutes les images non utilisées.docker volume prune– supprime les volumes non utilisés.
docker system prune -a supprime les images non liées à un container actif. À utiliser avec précaution dans les environnements partagés.7. Docker Compose (multi-containers)
docker compose up -d– lance les containers définis dansdocker-compose.yml.docker compose down– arrête et supprime les containers de la stack.docker compose logs -f– suit les logs de tous les services.docker compose ps– liste les containers du projet.docker compose exec <service> sh– ouvre un shell dans un service.
8. Bonnes pratiques en production
Docker est devenu le standard pour packager et exécuter des applications. En production cependant, des images mal configurées et des containers fonctionnant en root peuvent élargir la surface d'attaque et compliquer les audits.
Images plus légères et en couches
Utilisez des images de base Alpine ou distroless autant que possible et adoptez les multi-stage builds pour compiler dans une étape et copier uniquement le binaire dans l'étape finale. Moins de paquets = moins de CVEs et taille réduite. Fixez le tag de l'image de base (ex. : node:20-alpine) pour éviter les surprises lors des rebuilds.
Exécuter en non-root
Créez un utilisateur dédié dans le Dockerfile et utilisez l'instruction USER avant le CMD. Dans Kubernetes ou Docker Compose, évitez le mode privileged et limitez les ressources CPU et mémoire. Surveillez avec des outils de conformité comme Trivy ou Docker Scout pour identifier les vulnérabilités connues.
Secrets et configuration
Ne placez jamais de mots de passe ou de clés en texte clair dans les variables d'environnement du docker-compose.yml. Utilisez Docker secrets, des fichiers montés en read-only ou un orchestrateur (Kubernetes Secrets, HashiCorp Vault). Effectuez la rotation des identifiants régulièrement et maintenez les images de base à jour.