skip to content

Recherche

Syspirit
FR

Docker

Commandes Docker essentielles, docker-compose & dockerfile !

DevOps
Publié le
Mis à jour le

Docker est une plateforme qui permet d’empaqueter et d’exécuter des applications dans des conteneurs légers et portables sans se soucier de l’environnement dans lequel il est installé.

📦 Gestion des images

📌 Action🧠 Commande
📦 Lister toutes les imagesdocker images -a
📜 Télécharger une imagedocker pull postgres:latest
🏗️ Construire une imagedocker build -t monappli .
📜 Supprimer une imagedocker rmi <image_id>
🧹 Supprimer toutes les imagesdocker rmi $(docker images -q)

🐳 Gestion des conteneurs

📌 Action🧠 Commande
▶️ Lancer un conteneurdocker run <image>
🔙 Lancer en arrière-plandocker run -d <image>
⛔ Arrêter un conteneurdocker stop <container_id>
🔁 Redémarrer un conteneurdocker restart <container_id>
⏸️ Mettre en pausedocker pause <container_id>
▶️ Reprendredocker unpause <container_id>
🗑️ Supprimer un conteneurdocker rm <container_id>
🧹 Supprimer tous les conteneursdocker rm $(docker ps -aq)
🛑 Stopper tous les conteneursdocker stop $(docker ps -q)

🔄 Politique de redémarrage (Restart Policy)

Par défaut, un conteneur Docker ne redémarre pas automatiquement. Pour qu’il redémarre tout seul après un crash ou un reboot du serveur, il faut définir une politique de redémarrage.

📌 Politique🧠 Comportement
no (défaut)Ne redémarre jamais automatiquement
alwaysRedémarre toujours, y compris au reboot du serveur
unless-stoppedComme always, sauf si le conteneur a été arrêté manuellement
on-failureRedémarre uniquement en cas de code de sortie non-zéro (erreur)

🔍 Inspection et monitoring

📌 Action🧠 Commande
🔄 Lister les conteneurs actifsdocker ps
🔄 Lister tous les conteneursdocker ps -a
📜 Voir les logs d’un conteneurdocker logs <container_id>
📈 Voir l’utilisation des ressourcesdocker stats
🔍 Inspecter un conteneurdocker inspect <container_id>
💻 Se connecter à un conteneurdocker exec -it <container_id> bash (ou sh)
🌐 Lister les réseaux Dockerdocker network ls
💾 Lister les volumes Dockerdocker volume ls
📋 Infos système sur Dockerdocker info
🧠 Connaître les versions installéesdocker version

🧹 Nettoyage (Prune)

📌 Action🧠 Commande
🧼 Nettoyer les conteneurs arrêtésdocker container prune
🧽 Nettoyer les images non utiliséesdocker image prune
🧼 Nettoyer les réseaux inutilisésdocker network prune
🧽 Nettoyer les volumes non utilisésdocker volume prune
⚠️ Nettoyage complet (dangereux !)docker system prune -a
🗑️ Supprimer images sans tagdocker image prune -a

🛠️ Dépannage et Debug

📌 Action🧠 Commande
📜 Voir les logs en temps réeldocker logs -f <container_id>
🔍 Voir les processus dans un conteneurdocker top <container_id>
📊 Statistiques d’un conteneurdocker stats <container_id>
🕵️ Inspecter les changements de fichiersdocker diff <container_id>
📋 Historique d’une imagedocker history <image_id>
🌐 Tester la connectivité réseaudocker exec <container_id> ping google.com
📁 Copier du conteneur vers l’hôtedocker cp <container>:/chemin/fichier ./fichier
📤 Copier de l’hôte vers le conteneurdocker cp ./fichier <container>:/chemin/fichier

📝 Dockerfile

Dockerfile = recette pour créer une image personnalisée

Exemple simple - Nginx

FROM nginx:alpine
COPY index.html /usr/share/nginx/html/
EXPOSE 80

Exemple complet - App Node.js

FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]

Instructions clés

  • FROM - Image de base (ubuntu, nginx, node, postgres…)
  • WORKDIR - Dossier de travail dans le conteneur
  • COPY - Copier fichiers de l’hôte vers le conteneur
  • RUN - Exécuter des commandes lors du build
  • EXPOSE - Port à exposer
  • CMD - Commande par défaut au lancement

🔄 Docker Compose

Docker Compose = orchestrer un ou plusieurs conteneurs avec un fichier YAML

Exemple simple - Site + Base

services:
  web:
    image: nginx
    restart: unless-stopped
    ports:
      - "80:80"
    volumes:
      - ./site:/usr/share/nginx/html
 
  db:
    image: postgres:15
    restart: unless-stopped
    environment:
      POSTGRES_PASSWORD: motdepasse
      POSTGRES_DB: monapp
    volumes:
      - postgres_data:/var/lib/postgresql/data
 
volumes:
  postgres_data:

Exemple avancé - App complète

services:
  app:
    build: .
    restart: unless-stopped
    ports:
      - "3000:3000"
    environment:
      - DATABASE_URL=postgres://user:pass@db:5432/app
    depends_on:
      - db
 
  db:
    image: postgres:15
    restart: unless-stopped
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: pass
      POSTGRES_DB: app

Commandes essentielles

📌 Action🧠 Commande
▶️ Lancer en arrière-plandocker-compose up -d
⛔ Tout arrêter et supprimerdocker-compose down
📜 Voir les logs en temps réeldocker-compose logs -f
📋 Statut des servicesdocker-compose ps
🔁 Redémarrer tous les servicesdocker-compose restart
🏗️ Construire les imagesdocker-compose build
⏹️ Arrêter sans supprimerdocker-compose stop
📊 Voir les logs d’un servicedocker-compose logs <service>