Aller au contenu principal

Volumes et réseaux


Objectifs du chapitre

  • Créer et gérer des volumes
  • Parcourir les fichiers des volumes
  • Configurer des réseaux
  • Comprendre la connectivité des conteneurs

1 - Gestion des volumes

Liste des volumes

┌─────────────────────────────────────────────────────────────────┐
│ 📁 Volumes [+ Add volume] │
├─────────────────────────────────────────────────────────────────┤
│ □ Name Driver Mount point Used │
│ ──────────────────────────────────────────────────────────────│
│ □ postgres_data local /var/lib/docker... ✅ │
│ □ portainer_data local /var/lib/docker... ✅ │
│ □ nginx_config local /var/lib/docker... ✅ │
│ □ unused_volume local /var/lib/docker... ❌ │
│ │
│ Total: 4 volumes | Unused: 1 volume │
│ │
└─────────────────────────────────────────────────────────────────┘

Créer un volume

┌─────────────────────────────────────────────────────────────────┐
│ + Add Volume │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Name: [my-data ] │
│ │
│ Driver: [local ▼] │
│ │
│ Driver options: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ [type ] = [nfs ] [+ Add] │ │
│ │ [o ] = [addr=192... ] │ │
│ │ [device ] = [:/share ] │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ Access control: │
│ ( ) Unrestricted │
│ (•) Restricted to teams/users │
│ │
│ [Create the volume] │
│ │
└─────────────────────────────────────────────────────────────────┘

Types de volumes

TypeUsageConfiguration
localStockage localPar défaut
nfsStockage réseautype=nfs, o=addr=..., device=:/path
cifsPartage Windowstype=cifs, o=username=...,password=...
tmpfsRAMtype=tmpfs

2 - Parcourir un volume (Browse)

┌─────────────────────────────────────────────────────────────────┐
│ 📁 postgres_data [⬆️ Upload] [📥 Download] │
├─────────────────────────────────────────────────────────────────┤
│ 📂 / │
├─────────────────────────────────────────────────────────────────┤
│ 📁 base/ 4.0 KB 2024-01-15 │
│ 📁 global/ 12 KB 2024-01-15 │
│ 📁 pg_commit_ts/ 4.0 KB 2024-01-15 │
│ 📁 pg_dynshmem/ 4.0 KB 2024-01-15 │
│ 📁 pg_logical/ 4.0 KB 2024-01-15 │
│ 📁 pg_wal/ 16 MB 2024-01-15 │
│ 📄 postgresql.conf 28 KB 2024-01-15 │
│ 📄 pg_hba.conf 4.5 KB 2024-01-15 │
│ 📄 pg_ident.conf 1.6 KB 2024-01-15 │
│ │
└─────────────────────────────────────────────────────────────────┘

Actions sur les fichiers

ActionDescription
UploadTéléverser un fichier
DownloadTélécharger un fichier
RenameRenommer
DeleteSupprimer
EditÉditer le contenu (fichiers texte)

Édition de fichier

┌─────────────────────────────────────────────────────────────────┐
│ 📝 Edit: postgresql.conf [Save] [Cancel]│
├─────────────────────────────────────────────────────────────────┤
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ # PostgreSQL configuration file │ │
│ │ │ │
│ │ listen_addresses = '*' │ │
│ │ port = 5432 │ │
│ │ max_connections = 100 │ │
│ │ │ │
│ │ shared_buffers = 128MB │ │
│ │ dynamic_shared_memory_type = posix │ │
│ │ │ │
│ │ log_destination = 'stderr' │ │
│ │ logging_collector = on │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘

3 - Détails d'un volume

Inspection

┌─────────────────────────────────────────────────────────────────┐
│ 📁 postgres_data │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Information: │
│ ─────────────────────────────────────────────────────────────│
│ Name: postgres_data │
│ Driver: local │
│ Mount point: /var/lib/docker/volumes/postgres_data/_data │
│ Created: 2024-01-15 10:30:00 │
│ Scope: local │
│ │
│ Used by: │
│ ─────────────────────────────────────────────────────────────│
│ • postgres (container) │
│ │
│ Labels: │
│ ─────────────────────────────────────────────────────────────│
│ com.docker.compose.project: myapp │
│ com.docker.compose.volume: postgres_data │
│ │
└─────────────────────────────────────────────────────────────────┘

4 - Gestion des réseaux

Liste des réseaux

┌─────────────────────────────────────────────────────────────────┐
│ 🌐 Networks [+ Add network] │
├─────────────────────────────────────────────────────────────────┤
│ □ Name Driver Scope Subnet │
│ ──────────────────────────────────────────────────────────────│
│ □ bridge bridge local 172.17.0.0/16 │
│ □ host host local - │
│ □ none null local - │
│ □ app_frontend bridge local 172.18.0.0/16 │
│ □ app_backend bridge local 172.19.0.0/16 │
│ │
└─────────────────────────────────────────────────────────────────┘

Créer un réseau

┌─────────────────────────────────────────────────────────────────┐
│ + Add Network │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Name: [my-network ] │
│ │
│ Driver: [bridge ▼] │
│ • bridge - Single host networking │
│ • overlay - Multi-host networking (Swarm) │
│ • macvlan - Direct physical network │
│ │
│ ☐ Enable manual container attachment │
│ │
│ IPv4 configuration: │
│ ─────────────────────────────────────────────────────────────│
│ Subnet: [172.20.0.0/16 ] │
│ Gateway: [172.20.0.1 ] │
│ IP range: [172.20.1.0/24 ] │
│ │
│ Advanced options: │
│ ─────────────────────────────────────────────────────────────│
│ ☐ Isolated network (internal) │
│ ☐ Enable IPv6 │
│ │
│ Labels: │
│ [environment ] = [production ] [+ Add] │
│ │
│ [Create the network] │
│ │
└─────────────────────────────────────────────────────────────────┘

Options de création

OptionDescription
DriverType de réseau (bridge, overlay, macvlan)
SubnetPlage d'adresses IP
GatewayPasserelle par défaut
IP rangePlage d'allocation
InternalPas d'accès externe
IPv6Support IPv6

5 - Détails d'un réseau

Inspection

┌─────────────────────────────────────────────────────────────────┐
│ 🌐 app_frontend │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Information: │
│ ─────────────────────────────────────────────────────────────│
│ Name: app_frontend │
│ ID: abc123def456... │
│ Driver: bridge │
│ Scope: local │
│ Created: 2024-01-15 10:30:00 │
│ Internal: No │
│ Attachable: Yes │
│ │
│ IPAM: │
│ ─────────────────────────────────────────────────────────────│
│ Driver: default │
│ Subnet: 172.18.0.0/16 │
│ Gateway: 172.18.0.1 │
│ │
│ Connected containers: │
│ ─────────────────────────────────────────────────────────────│
│ • nginx 172.18.0.2 │
│ • api 172.18.0.3 │
│ • frontend 172.18.0.4 │
│ │
└─────────────────────────────────────────────────────────────────┘

Conteneurs connectés

La vue réseau montre tous les conteneurs connectés avec leurs IPs :

┌─────────────────────────────────────────────────────────────────┐
│ Connected containers │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Container IPv4 Address IPv6 Address MAC Address │
│ ──────────────────────────────────────────────────────────────│
│ nginx 172.18.0.2 - 02:42:ac:... │
│ api 172.18.0.3 - 02:42:ac:... │
│ frontend 172.18.0.4 - 02:42:ac:... │
│ │
│ [+ Connect container] [- Disconnect selected] │
│ │
└─────────────────────────────────────────────────────────────────┘

6 - Connecter/Déconnecter des conteneurs

Connecter un conteneur à un réseau

┌─────────────────────────────────────────────────────────────────┐
│ Connect container to network │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Container: [redis ▼] │
│ │
│ Network: app_frontend │
│ │
│ IPv4 Address: [ ] (optional) │
│ │
│ Aliases: │
│ [cache ] [+ Add alias] │
│ │
│ [Connect] │
│ │
└─────────────────────────────────────────────────────────────────┘

Depuis la page du conteneur

Vous pouvez aussi gérer les réseaux d'un conteneur depuis sa page de détails :

┌─────────────────────────────────────────────────────────────────┐
│ 📦 nginx - Networks │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Connected networks: │
│ ─────────────────────────────────────────────────────────────│
│ • app_frontend 172.18.0.2 [Leave] │
│ • app_backend 172.19.0.5 [Leave] │
│ │
│ [+ Join network] │
│ │
└─────────────────────────────────────────────────────────────────┘

7 - Réseaux overlay (Swarm)

Créer un réseau overlay

En mode Swarm, vous pouvez créer des réseaux overlay :

┌─────────────────────────────────────────────────────────────────┐
│ + Add Network (Swarm) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Name: [app-overlay ] │
│ │
│ Driver: [overlay ▼] │
│ │
│ Options: │
│ ☐ Enable encryption (--opt encrypted) │
│ ☑ Allow attachment from containers │
│ │
└─────────────────────────────────────────────────────────────────┘

8 - Bonnes pratiques

Volumes

# ✅ Nommer les volumes explicitement
postgres_data
redis_cache
app_uploads

# ✅ Utiliser des labels
environment=production
app=myapp

# ✅ Sauvegarder régulièrement via Browse > Download

# ❌ Éviter les volumes anonymes

Réseaux

# ✅ Isoler les services par réseau
frontend-net (nginx, frontend)
backend-net (api, db, redis)

# ✅ Utiliser des noms explicites
myapp-frontend
myapp-backend

# ✅ Configurer des subnets pour éviter les conflits
172.20.0.0/16
172.21.0.0/16

# ✅ Utiliser internal pour les réseaux sensibles

Résumé

RessourceActions
VolumesCreate, Browse, Edit, Upload, Download, Remove
NetworksCreate, Connect, Disconnect, Remove
Type de réseauUsage
bridgeConteneurs sur le même hôte
overlayMulti-hôtes (Swarm)
macvlanIntégration réseau physique
Points clés
  • Browse permet d'explorer et modifier les fichiers des volumes
  • Les réseaux personnalisés offrent l'isolation et le DNS interne
  • Utilisez des noms descriptifs pour volumes et réseaux
  • Les réseaux internes protègent les services backend

Exercices pratiques

  1. Créez un volume et explorez son contenu avec Browse
  2. Uploadez un fichier de configuration dans un volume
  3. Créez un réseau bridge personnalisé
  4. Connectez deux conteneurs au même réseau et testez le ping

← Gestion des images | Stacks et templates →