Skip to Content
CLI🐳 Docker

🐳 Docker

Commandes essentielles pour gérer les containers, images, volumes et networks.

Docker permet de containeriser des applications pour les rendre portables et faciles à déployer.

Containers

Lancer un container

# Lancer un container en mode détaché docker run -d --name mon-container nginx # Lancer avec un port mapping docker run -d -p 8080:80 nginx # Lancer avec des variables d'environnement docker run -d -e MY_VAR=value nginx # Lancer avec un volume docker run -d -v /host/path:/container/path nginx # Lancer en mode interactif docker run -it ubuntu bash

Gérer les containers

# Lister les containers actifs docker ps # Lister tous les containers (y compris arrêtés) docker ps -a # Arrêter un container docker stop mon-container # Démarrer un container arrêté docker start mon-container # Redémarrer un container docker restart mon-container # Supprimer un container docker rm mon-container # Supprimer un container en cours d'exécution docker rm -f mon-container # Supprimer tous les containers arrêtés docker container prune

Interagir avec un container

# Exécuter une commande dans un container docker exec -it mon-container bash # Voir les logs docker logs mon-container # Suivre les logs en temps réel docker logs -f mon-container # Voir les logs avec timestamps docker logs -t mon-container # Copier des fichiers vers/depuis un container docker cp fichier.txt mon-container:/path/ docker cp mon-container:/path/fichier.txt ./

Images

Gérer les images

# Lister les images docker images # Télécharger une image docker pull nginx:latest # Supprimer une image docker rmi nginx # Supprimer les images non utilisées docker image prune # Supprimer TOUTES les images non utilisées docker image prune -a # Construire une image depuis un Dockerfile docker build -t mon-image:tag . # Construire avec un Dockerfile spécifique docker build -f Dockerfile.dev -t mon-image:dev . # Taguer une image docker tag mon-image:latest registry.example.com/mon-image:latest # Pousser une image vers un registry docker push registry.example.com/mon-image:latest

Inspecter une image

# Voir l'historique des layers docker history mon-image # Inspecter les métadonnées docker inspect mon-image

Volumes

# Créer un volume docker volume create mon-volume # Lister les volumes docker volume ls # Inspecter un volume docker volume inspect mon-volume # Supprimer un volume docker volume rm mon-volume # Supprimer les volumes non utilisés docker volume prune # Utiliser un volume nommé docker run -d -v mon-volume:/data nginx # Utiliser un bind mount docker run -d -v $(pwd):/app nginx

Networks

# Créer un network docker network create mon-network # Lister les networks docker network ls # Inspecter un network docker network inspect mon-network # Connecter un container à un network docker network connect mon-network mon-container # Déconnecter un container docker network disconnect mon-network mon-container # Supprimer un network docker network rm mon-network # Lancer un container sur un network spécifique docker run -d --network mon-network nginx

Docker Compose

Docker Compose v2 utilise docker compose (sans tiret) au lieu de docker-compose.

Commandes de base

# Lancer les services docker compose up # Lancer en mode détaché docker compose up -d # Arrêter les services docker compose down # Arrêter et supprimer les volumes docker compose down -v # Reconstruire les images docker compose build # Lancer avec reconstruction docker compose up -d --build # Voir les logs docker compose logs # Suivre les logs docker compose logs -f # Logs d'un service spécifique docker compose logs -f nom-service

Gérer les services

# Lister les services docker compose ps # Redémarrer un service docker compose restart nom-service # Arrêter un service docker compose stop nom-service # Exécuter une commande dans un service docker compose exec nom-service bash # Scaler un service docker compose up -d --scale nom-service=3

Fichiers compose multiples

# Utiliser un fichier spécifique docker compose -f docker-compose.prod.yml up -d # Combiner plusieurs fichiers docker compose -f docker-compose.yml -f docker-compose.override.yml up -d

Nettoyage

# Supprimer tout ce qui n'est pas utilisé docker system prune # Supprimer tout (y compris les volumes) docker system prune -a --volumes # Voir l'espace disque utilisé docker system df # Voir l'espace disque détaillé docker system df -v

Debugging

# Inspecter un container docker inspect mon-container # Voir les stats en temps réel docker stats # Voir les stats d'un container spécifique docker stats mon-container # Voir les processus dans un container docker top mon-container # Voir les événements Docker docker events

Astuces

Alias utiles

# À ajouter dans .bashrc ou .zshrc alias d='docker' alias dc='docker compose' alias dps='docker ps' alias dpsa='docker ps -a' alias dimg='docker images' alias dlog='docker logs -f' alias dex='docker exec -it'

One-liners pratiques

# Arrêter tous les containers docker stop $(docker ps -q) # Supprimer tous les containers arrêtés docker rm $(docker ps -aq) # Supprimer toutes les images docker rmi $(docker images -q) # Supprimer les images dangling (sans tag) docker rmi $(docker images -f "dangling=true" -q) # Obtenir l'IP d'un container docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mon-container

Exemple de Dockerfile

# Image de base FROM node:20-alpine # Définir le répertoire de travail WORKDIR /app # Copier les fichiers de dépendances COPY package*.json ./ # Installer les dépendances RUN npm ci --only=production # Copier le code source COPY . . # Exposer le port EXPOSE 3000 # Commande de démarrage CMD ["node", "server.js"]

Exemple docker-compose.yml

version: '3.8' services: app: build: . ports: - "3000:3000" environment: - NODE_ENV=production - DATABASE_URL=postgres://user:pass@db:5432/mydb depends_on: - db restart: unless-stopped db: image: postgres:15-alpine volumes: - postgres_data:/var/lib/postgresql/data environment: - POSTGRES_USER=user - POSTGRES_PASSWORD=pass - POSTGRES_DB=mydb restart: unless-stopped volumes: postgres_data: