# 🐳 Docker Cheat Sheet

Cette page regroupe les commandes Docker les plus utilisées sur la plateforme Homelab.

Elle s'applique principalement aux services déployés dans des conteneurs Docker sur des LXC ou des VM (Bitwarden, Harbor, Docker Registry, Code-Server, etc.).

---

## 🎯 Objectif

Cette documentation permet de :

- Contrôler les conteneurs Docker
- Administrer les stacks Docker Compose
- Consulter les logs
- Construire des images
- Pousser des images vers le registre privé
- Effectuer les opérations de maintenance courantes

---

## 📋 Vérifier l'état des conteneurs

### Afficher les conteneurs en cours d'exécution

```bash
docker ps

```

### Afficher tous les conteneurs

```bash
docker ps -a

```

### Afficher les ressources utilisées

```bash
docker stats --no-stream

```

---

## 📄 Consulter les logs

### Afficher les 50 dernières lignes

```bash
docker logs --tail 50 <container>

```

### Suivre les logs en temps réel

```bash
docker logs -f --tail 50 <container>

```

---

## ⚙️ Administrer un conteneur

### Entrer dans un conteneur (Bash)

```bash
docker exec -it <container> /bin/bash

```

### Si Bash n'est pas disponible (Alpine)

```bash
docker exec -it <container> /bin/sh

```

### Redémarrer un conteneur

```bash
docker restart <container>

```

### Arrêter un conteneur

```bash
docker stop <container>

```

### Démarrer un conteneur

```bash
docker start <container>

```

---

## 🐙 Docker Compose

La majorité des services de la plateforme sont déployés via **Docker Compose**.

### Démarrer la stack

```bash
docker compose up -d

```

### Arrêter la stack

```bash
docker compose down

```

### Redémarrer la stack

```bash
docker compose restart

```

### Mettre à jour les images

```bash
docker compose pull
docker compose up -d

```

Docker Compose ne recrée que les services dont l'image a changé.

### Consulter les logs

```bash
docker compose logs -f --tail 50

```

---

## 🧹 Maintenance Docker

### Afficher l'espace disque utilisé

```bash
docker system df

```

### Nettoyer les ressources inutilisées

```bash
docker system prune

```

### Nettoyage complet

```bash
docker system prune -a --volumes

```

**⚠ Attention :** cette commande supprime toutes les images inutilisées, les volumes orphelins et les conteneurs arrêtés.

---

## 🏗 Construire une image

Depuis le dossier contenant le `Dockerfile`.

```bash
docker build -t registry.numericare.fr/library/code-server:custom-v1 .

```

---

## 📦 Registre privé

### Connexion

```bash
docker login registry.numericare.fr

```

### Pousser une image

```bash
docker push registry.numericare.fr/library/code-server:custom-v1

```

---

## 🌐 Réseau

### Afficher les réseaux Docker

```bash
docker network ls

```

### Inspecter le réseau bridge

```bash
docker network inspect bridge

```

---

## 💾 Volumes

### Afficher les volumes

```bash
docker volume ls

```

### Inspecter un volume

```bash
docker volume inspect <volume>

```

---

## 🔍 Dépannage

<table id="bkmrk-probl%C3%A8me-commande-le"><thead><tr><th>Problème</th><th>Commande</th></tr></thead><tbody><tr><td>Le conteneur ne démarre pas</td><td>`docker logs <container>`</td></tr><tr><td>Vérifier les ressources</td><td>`docker stats`</td></tr><tr><td>Problème réseau</td><td>`docker network inspect bridge`</td></tr><tr><td>Problème de volume</td><td>`docker volume inspect <volume>`</td></tr><tr><td>Espace disque saturé</td><td>`docker system df`</td></tr></tbody></table>

---

## 💡 Bonnes pratiques

- Utiliser **Docker Compose** plutôt que des commandes `docker run`.
- Éviter les conteneurs créés manuellement.
- Toujours versionner les fichiers `docker-compose.yml`.
- Privilégier le registre privé **registry.numericare.fr**.
- Ne jamais modifier un conteneur en production avec `docker exec` sauf pour du diagnostic.
- Reconstruire l'image plutôt que modifier un conteneur existant.
- Nettoyer régulièrement les images inutilisées afin d'éviter la saturation des petits LXC.

---

## 📚 Voir également

- Installation de Docker sur un LXC Proxmox
- Docker Registry
- Harbor
- Code-Server
- Docker Compose Standards

```