📊 Portainer: Centralized Container Management
::: info Portainer è una potente interfaccia grafica (GUI) web-based che permette di gestire interi ecosistemi Docker, Swarm o Kubernetes. In questo laboratorio, utilizziamo Portainer per monitorare il ciclo di vita dei container, analizzare i log in tempo reale e gestire i “Stacks” (file Docker Compose) in modo centralizzato. :::
1. Architettura dell’integrazione
Portainer gira come un container isolato ma ha bisogno di comunicare con il demone Docker dell’host. Questo avviene tramite il montaggio del Docker Socket (/var/run/docker.sock).
2. Deploy di Portainer (CE)
Seguendo le nostre Best Practices, utilizziamo un file Docker Compose per il deploy.
Configurazione docker-compose.yaml
services:
portainer:
image: portainer/portainer-ce:latest
container_name: portainer-io
restart: unless-stopped
security_opt:
- no-new-privileges:true
ports:
- "8000:8000"
- "9443:9443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer_data:/data
networks:
- proxy_net
networks:
proxy_net:
external: true
volumes:
portainer_data:
3. Funzionalità Chiave per l’Ingegnere
A. Stacks (Infrastructure as Code)
La sezione Stacks di Portainer è l’equivalente della riga di comando docker-compose. Permette di incollare il codice YAML e gestire l’intero ciclo di vita dell’applicazione. Portainer tiene traccia delle modifiche e permette il redeploy immediato.
B. Container Console & Logs
Fornisce un accesso immediato a:
- Logs: Visualizzazione in tempo reale con filtri per stringa.
- Console: Apertura di una shell (
/bin/sho/bin/bash) direttamente nel browser senza bisogno di SSH. - Stats: Grafici sull’uso di CPU, RAM e Network I/O.
C. Image Management
Permette di visualizzare le immagini inutilizzate (dangling images) e di pulire il registro locale con un click, liberando spazio prezioso sul disco NVMe/SSD.
🛡️ Hardening della Dashboard
Dato che Portainer ha il controllo totale del tuo sistema, la sua sicurezza è prioritaria:
- HTTPS Obbligatorio: Portainer (Business e Community) usa la porta
9443per le connessioni protette. - Password Policy: Al primo avvio, imposta una password complessa (minimo 12 caratteri).
- Authentication: In ambienti multi-utente, integra Portainer con un server LDAP o OAuth.
- Socket Protection: Non esporre mai la porta di Portainer direttamente su internet. Utilizza sempre un Reverse Proxy con autenticazione aggiuntiva.
💡 Note dell’Ingegnere (Critical Thinking)
- Socket Risk: Montare
/var/run/docker.sockall’interno di un container è un rischio di sicurezza (se il container viene compromesso, l’attaccante ha i privilegi di root sull’host). Per questo motivo, usiamo l’opzioneno-new-privileges:truenel file Compose. - Edge Agent: Se aggiungi altri server Linux alla tua rete (es. il Mac Pro e un Raspberry Pi), non serve installare Portainer ovunque. Installa solo il Portainer Agent sui nodi secondari e collegali alla dashboard centrale del server Proxmox.
- Backup: Ricorda di backuppare regolarmente il volume
portainer_data. Esso contiene tutte le configurazioni degli stack e le impostazioni degli utenti.
Tags: #Docker #Portainer #GUI #Monitoring #DevOps #Management*