Docker : les 20 commandes à connaître pour bien débuter

Par Fabrice Chrzanowski ·

Docker : les 20 commandes à connaître pour bien débuter

Docker s’apprend en pratiquant. Avec une vingtaine de commandes, vous savez déjà lancer une application, la diagnostiquer, construire votre propre image et assembler plusieurs services. Les voici, dans l’ordre où vous en aurez besoin.

Image ou conteneur ?

Une image est un modèle en lecture seule (l’application et tout ce qu’il lui faut). Un conteneur est une instance en cours d’exécution de cette image. On peut lancer dix conteneurs à partir de la même image.

Lancer et observer

docker run -d --name web -p 8080:80 nginx   # lancer en arrière-plan, port 8080 de l’hôte vers 80
docker ps                                   # conteneurs en cours
docker ps -a                                # tous les conteneurs, même arrêtés
docker logs -f web                          # suivre les journaux
docker exec -it web sh                      # ouvrir un shell dans le conteneur
docker stats                                # consommation en direct

Arrêter et nettoyer

docker stop web
docker start web
docker rm web                               # supprimer le conteneur
docker system prune                         # supprimer ce qui n’est plus utilisé

Gérer les images

docker pull redis:7
docker images
docker rmi redis:7

Précisez toujours une version (redis:7) plutôt que latest : vos déploiements restent reproductibles.

Construire sa propre image

# Dockerfile
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]
docker build -t monapp:1.0 .
docker run -d -p 5000:5000 monapp:1.0

Conserver les données : les volumes

docker volume create donnees
docker run -d --name db -v donnees:/var/lib/postgresql/data -e POSTGRES_PASSWORD=secret postgres:16
docker volume ls

Sans volume, les données disparaissent avec le conteneur.

Faire communiquer les conteneurs : les réseaux

docker network create appnet
docker run -d --name db --network appnet postgres:16
docker run -d --name web --network appnet monapp:1.0   # « db » est joignable par son nom

Assembler plusieurs services : Docker Compose

# compose.yaml
services:
  web:
    build: .
    ports: ["5000:5000"]
    depends_on: [db]
  db:
    image: postgres:16
    environment:
      POSTGRES_PASSWORD: secret
    volumes: ["donnees:/var/lib/postgresql/data"]
volumes:
  donnees:
docker compose up -d
docker compose logs -f
docker compose down

Trois bonnes habitudes

  • Un conteneur = un processus principal. Séparez l’application et la base de données.
  • Ne mettez jamais de mot de passe dans une image : passez-le par des variables d’environnement ou des secrets.
  • Ajoutez un fichier .dockerignore pour ne pas copier inutilement .git ou node_modules dans l’image.

Aller plus loin avec la formation vidéo

La formation reprend ces commandes en atelier : images, Dockerfile, volumes, réseaux et Docker Compose, en 23 leçons vidéo.

Découvrir la formation « Workshop conteneurisation avec Docker »