Bases
Lancer des conteneurs
docker run nginx # run image docker run -d nginx # detached (background) docker run -p 8080:80 nginx # map port docker run --name web nginx # named container docker run -it ubuntu bash # interactive shell
Commandes essentielles
docker psLister les conteneurs en cours
docker ps -aLister tous les conteneurs (y compris arrêtés)
docker imagesLister les images locales
docker pull nginxTélécharger une image depuis le registre
docker infoInformations système générales
Gestion des conteneurs
Cycle de vie
docker start <id>Démarrer un conteneur arrêté
docker stop <id>Arrêt propre (SIGTERM)
docker kill <id>Arrêt forcé (SIGKILL)
docker restart <id>Redémarrer le conteneur
docker rm <id>Supprimer un conteneur arrêté
docker rm -f <id>Suppression forcée (même si en cours)
Inspection & Débogage
docker logs <id>Afficher les logs du conteneur
docker logs -f <id>Suivre les logs en temps réel
docker exec -it <id> bashOuvrir un shell dans le conteneur
docker inspect <id>Métadonnées détaillées du conteneur (JSON)
docker top <id>Processus en cours dans le conteneur
docker statsUtilisation des ressources en temps réel
Copier des fichiers
docker cp file.txt :/app/ # host → container docker cp :/app/log.txt ./ # container → host
Images
Construction & Tag
docker build -t myapp . # build from Dockerfile docker build -t myapp:v2 . # with tag docker tag myapp user/myapp:v2 # retag image
Publication
docker login docker push user/myapp:v2 docker pull user/myapp:v2
Gestion des images
docker imagesLister toutes les images locales
docker rmi <image>Supprimer une image
docker image pruneSupprimer les images orphelines
docker system pruneSupprimer toutes les données inutilisées
docker history <image>Afficher l'historique des couches
Dockerfile
Instructions courantes
FROM node:20Image de base
WORKDIR /appDéfinir le répertoire de travail
COPY . .Copier des fichiers dans l'image
RUN npm installExécuter une commande lors de la construction
CMD ["node", "app.js"]Commande par défaut à l'exécution
EXPOSE 3000Documenter le port d'écoute
ENV NODE_ENV=productionDéfinir une variable d'environnement
ARG VERSION=latestVariable de construction
ENTRYPOINT ["python"]Exécutable fixe (CMD = arguments)
Exemple de Dockerfile
FROM node:20-alpine WORKDIR /app COPY package*.json ./ RUN npm ci --production COPY . . EXPOSE 3000 CMD ["node", "server.js"]
Volumes
Stockage persistant
docker volume create mydata docker run -v mydata:/app/data nginx docker run -v $(pwd):/app nginx # bind mount
Commandes de volume
docker volume lsLister les volumes
docker volume inspect <v>Détails du volume
docker volume rm <v>Supprimer un volume
docker volume pruneSupprimer les volumes inutilisés
Réseau
Bases du réseau
docker network create mynet docker run --network mynet --name api nginx docker run --network mynet --name db postgres
Commandes réseau
docker network lsLister les réseaux
docker network inspect <n>Détails du réseau
docker network connect <n> <c>Attacher un conteneur au réseau
docker network rm <n>Supprimer un réseau

Les conteneurs sur le même réseau se joignent par leur nom

Docker Compose
Exemple compose.yaml
services: web: build: . ports: ["3000:3000"] depends_on: [db] db: image: postgres:16 environment: POSTGRES_PASSWORD: secret volumes: [pgdata:/var/lib/postgresql/data] volumes: pgdata:
Commandes Compose
docker compose upDémarrer tous les services
docker compose up -dDémarrer en arrière-plan
docker compose downArrêter et supprimer les conteneurs
docker compose down -vSupprimer aussi les volumes
docker compose buildReconstruire les images
docker compose logs -fSuivre les logs de tous les services
docker compose psLister les services en cours
docker compose exec web bashOuvrir un shell dans un service
Recettes utiles
Nettoyage
docker system prune -a # remove all unused docker container prune # remove stopped docker image prune -a # remove unused images
Raccourcis pratiques
Conteneur temporairedocker run --rm -it alpine sh
Vérifier les portsdocker port
Variables d'envdocker run -e KEY=val image
Fichier d'envdocker run --env-file .env image
Politique de redémarragedocker run --restart unless-stopped image
Limite de ressourcesdocker run --memory 512m --cpus 1 image