Skip to content

Docker ​

Docker est une plateforme de conteneurisation : elle permet d'empaqueter une application avec tout ce dont elle a besoin (code, dépendances, configuration) dans un conteneur isolé, léger et portable.

Images ​

Une image est un modèle en lecture seule. On l'utilise comme base pour créer des conteneurs.

Télécharger une image ​

sh
docker pull <image>

Télécharge l'image depuis Docker Hub. Exemple : docker pull nginx

Lister les images locales ​

sh
docker images

Supprimer une image ​

sh
docker rmi <image>

Conteneurs ​

Un conteneur est une instance en cours d'exécution d'une image.

Lancer un conteneur ​

sh
docker run -d --name <nom> -p <port_hôte>:<port_conteneur> <image>
OptionEffet
-dLancer en arrière-plan (detached)
--name <nom>Donner un nom au conteneur
-p 8080:80Relier le port 8080 de la machine au port 80 du conteneur
-v /chemin/hôte:/chemin/conteneurMonter un volume (dossier partagé)
-e CLE=valeurDéfinir une variable d'environnement
--rmSupprimer le conteneur automatiquement à l'arrêt

Lister les conteneurs ​

sh
docker ps        # conteneurs en cours d'exécution
docker ps -a     # tous les conteneurs (y compris arrêtés)

Arrêter / démarrer un conteneur ​

sh
docker stop <nom>    # arrêt propre (signal SIGTERM)
docker start <nom>   # redémarrer un conteneur arrêté
docker restart <nom> # arrêter puis redémarrer

Supprimer un conteneur ​

sh
docker rm <nom>

Le conteneur doit être arrêté avant d'être supprimé.

Afficher les logs ​

sh
docker logs <nom>
docker logs -f <nom>   # suivre les logs en temps réel

Ouvrir un shell dans un conteneur ​

sh
docker exec -it <nom> bash

-it = mode interactif + terminal. Utiliser sh si bash n'est pas disponible.

Volumes ​

Un volume permet de persister des données en dehors du conteneur. Sans volume, toute donnée est perdue à la suppression du conteneur.

sh
docker volume create <nom_volume>
docker volume ls
docker volume rm <nom_volume>

Monter un volume lors du docker run :

sh
docker run -d -v mon_volume:/var/lib/mysql mysql

Docker Compose ​

Docker Compose permet de définir et lancer plusieurs conteneurs via un fichier docker-compose.yml.

Structure de base ​

yaml
services:
  web:
    image: nginx
    ports:
      - "8080:80"
  db:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: secret
    volumes:
      - db_data:/var/lib/mysql

volumes:
  db_data:

Commandes Compose ​

sh
docker compose up -d        # créer et démarrer tous les services
docker compose down         # arrêter et supprimer les conteneurs
docker compose down --volumes  # idem + supprimer les volumes
docker compose ps           # état des services
docker compose logs -f      # logs en temps réel
docker compose logs <service>  # logs d'un service spécifique
docker compose exec <service> bash  # shell dans un service
docker compose stop         # arrêter sans supprimer
docker compose start        # redémarrer des services arrêtés

Nettoyage ​

sh
docker system prune          # supprimer conteneurs arrêtés, images inutilisées, réseaux orphelins
docker system prune -a       # idem + toutes les images non utilisées

Attention

docker system prune est irréversible. Vérifiez ce que vous souhaitez conserver avant de l'exécuter.

Rappel clé

  • Image = le modèle (recette)
  • Conteneur = l'instance en cours (le plat cuisiné)
  • Volume = les données persistées (le frigo)
  • Compose = orchestration de plusieurs conteneurs