| Commandes Docker | |
|---|---|
| Objectif | Commande |
| Voir les images locales | docker images |
| Voir les containers | docker ps -a |
| Voir les logs d'un container | docker logs <id> docker logs -f <id> (suivi en temps réel) |
| Démarrer un container | docker start <id> |
| Démarrer un container avec console | docker start --attach <name> docker run -it <image> /bin/bash docker run --tty --interactive debian:12 /bin/bash |
| Stopper un container | docker stop <id> |
| Redémarrer un container | docker restart <id> |
| Voir la configuration d'un container | docker inspect <id> |
| Voir l'IP d'un container | docker inspect <id> | grep IPAddress |
| Voir les stats d'un container | docker stats <id> |
| Rechercher une image sur Docker Hub | docker search nginx |
| Télécharger une image | docker pull nginx:latest |
| Créer et démarrer un container | docker run -d --name MonServeur nginx:latest |
| Créer un container avec port exposé | docker run -d -p 8080:80 --name=MonWebserver nginx:latest |
| Ouvrir un shell sur un container actif | docker exec -it <id> /bin/bash docker exec -it MonWebserver /bin/bash docker exec MonWebserver ls -al |
| Supprimer une image | docker rmi <image>:<tag> |
| Supprimer un container | docker rm <id> docker rm -f <id> (forcer) |
| Supprimer tous les containers arrêtés | docker container prune |
| Supprimer toutes les images non utilisées | docker image prune -a |
| Nettoyer tout (containers, images, volumes, networks) | docker system prune -a --volumes |
| Construire une image depuis un Dockerfile | docker build -t mon-image:1.0 . |
| Docker Networks | |
| Lister les réseaux | docker network ls |
| Créer un réseau | docker network create mon-reseau |
| Connecter un container à un réseau | docker network connect mon-reseau <container> |
| Inspecter un réseau | docker network inspect mon-reseau |
| Docker Volumes | |
| Lister les volumes | docker volume ls |
| Créer un volume | docker volume create mon-volume |
| Inspecter un volume | docker volume inspect mon-volume |
| Supprimer un volume | docker volume rm mon-volume |
| Monter un volume | docker run -v mon-volume:/data <image> |
| Docker Compose | |
| Démarrer tous les services | docker-compose up -d |
| Arrêter tous les services | docker-compose down |
| Voir les logs de tous les services | docker-compose logs -f |
| Reconstruire les images | docker-compose build |
| Redémarrer un service | docker-compose restart <service> |
| Troubleshooting / Debug | |
| Voir les dernières lignes de logs | docker logs --tail 100 <id> |
| Voir les processus actifs dans un container | docker top <id> |
| Voir les changements dans le filesystem | docker diff <id> |
| Voir le mapping des ports | docker port <id> |
| Copier un fichier depuis/vers un container | docker cp <container>:/chemin/fichier ./local docker cp ./local <container>:/chemin/ |
| Attacher au container en cours d'exécution | docker attach <id> |
| Monitoring / Stats | |
| Voir les stats en continu | docker stats |
| Voir un snapshot des stats | docker stats --no-stream |
| Voir l'espace disque utilisé | docker system df |
| Voir les événements en temps réel | docker events |
| Historique d'une image | docker history <image> |
| Optimisation | |
| Fichier .dockerignore | Créer un fichier .dockerignore pour exclure des fichiers du build (node_modules/, .git/, *.log, etc.) |
| Build multi-stage | Utiliser plusieurs FROM dans un Dockerfile pour réduire la taille finale FROM node:18 AS builder → FROM node:18-alpine AS production |
| Nettoyer régulièrement | docker system prune -a --volumes (libérer de l'espace) |
| Limiter les ressources d'un container | docker run -m 512m --cpus="1.5" <image> |
| Docker Hub / Registry | |
| Se connecter à Docker Hub | docker login |
| Se déconnecter | docker logout |
| Tagger une image | docker tag mon-image:1.0 moncompte/mon-image:1.0 |
| Pousser une image sur Docker Hub | docker push moncompte/mon-image:1.0 |
| Télécharger une version spécifique | docker pull nginx:1.25-alpine |
| Autres Technologies Populaires | |
| Redis (cache) | docker run -d -p 6379:6379 --name mon-redis redis:alpine |
| PostgreSQL | docker run -d -p 5432:5432 -e POSTGRES_PASSWORD=secret --name mon-postgres postgres:16 |
| Nginx | docker run -d -p 80:80 -v ./html:/usr/share/nginx/html --name mon-nginx nginx:alpine |
| MongoDB | docker run -d -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=secret mongo:7 |
| Node.js | docker run -d -p 3000:3000 -v ./app:/usr/src/app -w /usr/src/app node:20 npm start |
| Directives Dockerfile | |
|
FROM : image de base (debian:12, php:8.2-apache) LABEL maintainer : nom et email du mainteneur RUN : commande à exécuter lors du build COPY : copier des fichiers locaux dans l'image ADD : copier avec support archives et URLs WORKDIR : définir le répertoire de travail ENV : définir une variable d'environnement EXPOSE : port(s) à exposer VOLUME : point de montage USER : utilisateur pour les commandes suivantes CMD : commande par défaut au démarrage ENTRYPOINT : commande principale (non remplaçable) |
|
| Exemples Pratiques | |
| Apache PHP | docker run -d -p 8080:80 -v ./www:/var/www/html php:8.2-apache |
| MySQL | docker run -d -p 3306:3306 -v ./mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=secret mysql:8 |
| MariaDB | docker run -d -p 3307:3306 -v ./mariadb-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=secret mariadb:11 |
| PhpMyAdmin | docker run -d -p 8081:80 -e PMA_HOST=mysql --network mon-reseau phpmyadmin:latest |
| Exemple Complet : Stack LAMP avec Docker Compose | |
| Fichier .env (variables sensibles) |
|
| Fichier docker-compose.yml (version 3) |
|
| Fichier Dockerfile personnalisé (Apache PHP MySQL) |
|
| Fichier config/apache.conf (VirtualHost) |
|
|
Utilisation : 1. Créer les fichiers .env, docker-compose.yml dans un dossier 2. Créer les sous-dossiers : www/ logs/ config/ 3. Lancer : docker-compose up -d4. Accès Web : http://localhost:8080 5. Accès PhpMyAdmin : http://localhost:8081 6. Arrêter : docker-compose down
|
|