Gestion des conteneurs
Objectifs du chapitre
- Créer des conteneurs via l'interface
- Gérer le cycle de vie des conteneurs
- Utiliser les logs et la console
- Monitorer les performances
1 - Créer un conteneur
Via l'interface
- Aller dans Containers > + Add container
- Configurer les paramètres
Paramètres de base
┌─────────────────────────────────────────────────────────────────┐
│ + Add container │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Name: [mon-nginx ] │
│ │
│ Image: [nginx:alpine ] [🔍 Search] │
│ │
│ ☐ Always pull the image │
│ │
└─────────────────────────────────────────────────────────────────┘
Configuration des ports
┌─────────────────────────────────────────────────────────────────┐
│ Network ports configuration │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ☑ Publish all exposed ports │
│ │
│ Manual port mapping: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Host Container Protocol │ │
│ │ [8080 ] [80 ] [TCP ▼] [+ Add port] │ │
│ │ [8443 ] [443 ] [TCP ▼] [🗑️] │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
Configuration avancée
| Tab | Options |
|---|---|
| Command & logging | Command, entrypoint, working dir, user, console |
| Volumes | Bind mounts, volumes, tmpfs |
| Network | Network mode, hostname, DNS, hosts |
| Env | Variables d'environnement |
| Labels | Labels Docker |
| Restart policy | Politique de redémarrage |
| Runtime & Resources | Limites CPU/mémoire, privileges |
| Capabilities | Linux capabilities |
Exemple : Créer un conteneur nginx
Paramètres:
- Name: web-server
- Image: nginx:alpine
- Ports: 8080:80
- Volume: ./html:/usr/share/nginx/html
- Restart policy: Unless stopped
2 - Actions sur les conteneurs
Actions rapides
| Icône | Action | Description |
|---|---|---|
| ▶️ | Start | Démarrer le conteneur |
| ⏹️ | Stop | Arrêter gracieusement |
| 🔄 | Restart | Redémarrer |
| ⏸️ | Pause | Mettre en pause |
| ▶ ️ | Unpause | Reprendre |
| 🔪 | Kill | Forcer l'arrêt (SIGKILL) |
| 🗑️ | Remove | Supprimer |
Actions avancées
| Action | Description |
|---|---|
| Duplicate/Edit | Créer une copie ou modifier |
| Recreate | Recréer avec la même config |
| Attach | Attacher le terminal |
| Logs | Voir les logs |
| Inspect | JSON complet |
| Stats | Métriques temps réel |
3 - Logs des conteneurs
Visualisation des logs
┌─────────────────────────────────────────────────────────────────┐
│ 📋 Logs - nginx │
├─────────────────────────────────────────────────────────────────┤
│ Options: [Auto-refresh ☑] [Timestamps ☑] [Lines: 100 ▼] │
│ [Wrap ☑] [Download] │
├─────────────────────────────────────────────────────────────────┤
│ 2024-01-15 10:30:05 /docker-entrypoint.sh: Launching nginx │
│ 2024-01-15 10:30:05 nginx: [notice] using the "epoll" event │
│ 2024-01-15 10:30:06 192.168.1.1 - - "GET / HTTP/1.1" 200 │
│ 2024-01-15 10:31:15 192.168.1.1 - - "GET /api HTTP/1.1" 404 │
│ 2024-01-15 10:32:00 192.168.1.2 - - "GET / HTTP/1.1" 200 │
│ │
└─────────────────────────────────────────────────────────────────┘
Options de logs
| Option | Description |
|---|---|
| Auto-refresh | Mise à jour automatique |
| Timestamps | Afficher les horodatages |
| Lines | Nombre de lignes à afficher |
| Wrap | Retour à la ligne automatique |
| Download | Télécharger les logs |
| Search | Rechercher dans les logs |
4 - Console (Exec)
Accéder au terminal
┌─────────────────────────────────────────────────────────────────┐
│ 💻 Console - nginx [Connect] │
├─────────────────────────────────────────────────────────────────┤
│ Command: [/bin/sh ▼] │
│ User: [root ] │
├─────────────────────────────────────────────────────────────────┤
│ │
│ / # ls -la │
│ total 80 │
│ drwxr-xr-x 1 root root 4096 Jan 15 10:30 . │
│ drwxr-xr-x 1 root root 4096 Jan 15 10:30 .. │
│ drwxr-xr-x 2 root root 4096 Jan 10 00:00 bin │
│ drwxr-xr-x 5 root root 340 Jan 15 10:30 dev │
│ drwxr-xr-x 1 root root 4096 Jan 15 10:30 etc │
│ / # _ │
│ │
└─────────────────────────────────────────────────────────────────┘
Commandes utiles dans la console
# Vérifier les processus
ps aux
# Voir la configuration
cat /etc/nginx/nginx.conf
# Tester la connectivité
ping google.com
# Voir les variables d'environnement
env
# Vérifier l'espace disque
df -h
5 - Statistiques en temps réel
Dashboard de stats
┌─────────────────────────────────────────────────────────────────┐
│ 📊 Stats - nginx │
├─────────────────────────────────────────────────────────────────┤
│ │
│ CPU Usage │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ ████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 2.5% │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ Memory Usage │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ ██████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 35.2% │ │
│ │ 45.2 MB / 128 MB │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ Network I/O │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ ↓ 1.2 MB received ↑ 856 KB sent │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ Block I/O │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Read: 4.5 MB Write: 1.2 MB │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
Métriques disponibles
| Métrique | Description |
|---|---|
| CPU % | Utilisation CPU |
| Memory | RAM utilisée / limite |
| Network RX | Données reçues |
| Network TX | Données envoyées |
| Block Read | Lecture disque |
| Block Write | Écriture disque |
| PIDs | Nombre de processus |
6 - Inspecter un conteneur
Informations détaillées
┌──────────────────────────────────── ─────────────────────────────┐
│ 🔍 Inspect - nginx │
├─────────────────────────────────────────────────────────────────┤
│ │
│ { │
│ "Id": "abc123def456...", │
│ "Created": "2024-01-15T10:30:00.000000000Z", │
│ "Path": "/docker-entrypoint.sh", │
│ "Args": ["nginx", "-g", "daemon off;"], │
│ "State": { │
│ "Status": "running", │
│ "Running": true, │
│ "StartedAt": "2024-01-15T10:30:05.000000000Z" │
│ }, │
│ "Image": "sha256:...", │
│ "NetworkSettings": { │
│ "IPAddress": "172.17.0.2", │
│ "Ports": { │
│ "80/tcp": [{"HostPort": "8080"}] │
│ } │
│ } │
│ } │
│ │
└─────────────────────────────────────────────────────────────────┘
7 - Duplicate/Edit
Modifier un conteneur
Pour modifier un conteneur existant :
- Sélectionner le conteneur
- Cliquer sur Duplicate/Edit
- Modifier les paramètres
- Cliquer sur Deploy the container
┌─────────────────────────────────────────────────────────────────┐
│ Duplicate/Edit container: nginx │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ⚠️ This will stop and recreate the container │
│ │
│ Name: [nginx-v2 ] │
│ Image: [nginx:1.25-alpine ] (modified) │
│ │
│ Ports: │
│ [8080] → [80] │
│ [8443] → [443] (new) │
│ │
│ [Deploy the container] [Cancel] │
│ │
└─────────────────────────────────────────────────────────────────┘
8 - Actions en masse
Sélection multiple
┌─────────────────────────────────────────────────────────────────┐
│ 📦 Containers │
├─────────────────────────────────────────────────────────────────┤
│ [Selected: 3] Actions: [Start] [Stop] [Kill] [Remove] │
├─────────────────────────────────────────────────────────────────┤
│ ☑ nginx 🟢 Running │
│ ☑ postgres 🟢 Running │
│ ☑ redis 🟢 Running │
│ □ old-app 🔴 Stopped │
│ │
└─────────────────────────────────────────────────────────────────┘
Filtres
| Filtre | Options |
|---|---|
| State | Running, Stopped, All |
| Name | Recherche par nom |
| Image | Filtrer par image |
| Network | Filtrer par réseau |
9 - Bonnes pratiques
Nommage
# ✅ Bon
web-server
api-backend-prod
database-postgres-v15
# ❌ Mauvais
container1
test
abc
Ressources
Toujours définir des limites :
Memory limit: 512 MB
CPU limit: 0.5
Restart policy
| Policy | Usage |
|---|---|
| No | Tests |
| Always | Services critiques |
| On-failure | Applications instables |
| Unless-stopped | Production standard |
Résumé
| Action | Comment |
|---|---|
| Créer | + Add container |
| Démarrer/Arrêter | Boutons d'action |
| Logs | Onglet Logs |
| Console | Onglet Console |
| Stats | Onglet Stats |
| Modifier | Duplicate/Edit |
| Supprimer | Remove |
Points clés
- L'interface permet toutes les opérations de la CLI
- Les logs et la console facilitent le débogage
- Les stats permettent le monitoring en temps réel
- Duplicate/Edit permet de modifier sans downtime
Exercices pratiques
- Créez un conteneur nginx avec les ports 8080:80
- Accédez à la console et listez les fichiers
- Surveillez les statistiques pendant une charge
- Modifiez le conteneur pour changer l'image