Portainer: Centralized Container Management

📊 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/sh o /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:

  1. HTTPS Obbligatorio: Portainer (Business e Community) usa la porta 9443 per le connessioni protette.
  2. Password Policy: Al primo avvio, imposta una password complessa (minimo 12 caratteri).
  3. Authentication: In ambienti multi-utente, integra Portainer con un server LDAP o OAuth.
  4. 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.sock all’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’opzione no-new-privileges:true nel 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*

Last updated on Thursday, March 5, 2026
Built with Hugo
Theme Stack designed by Jimmy