Plesk Docker: container management dal pannello

Docker integrato in Plesk

Plesk include un'estensione Docker che permette di scaricare, configurare e avviare container direttamente dal pannello, senza usare la riga di comando. E' uno strumento potente per:

  • Eseguire database secondari (Redis, MongoDB, Elasticsearch)
  • Ospitare applicazioni in tecnologie non supportate nativamente (Go, Rust, .NET)
  • Creare ambienti di test isolati
  • Deployare microservizi accanto ai siti web tradizionali

Installare l'estensione Docker

Plesk Obsidian include Docker. Se non e' installato:

  1. Andare in Extensions Catalog
  2. Cercare "Docker"
  3. Cliccare Install

Per il backend Docker, Plesk installa automaticamente Docker Engine sul server. Verificare:

docker --version
systemctl status docker

Browse delle immagini

Il pannello Docker mostra:

  • Local Image Catalog: immagini già' scaricate sul server
  • Docker Hub Image Catalog: cerca su Docker Hub immagini ufficiali

Cercare ad esempio "redis" o "mongo" e cliccare Run (Local) per scaricare e avviare un container.

Configurazione del container

Prima di avviare un container, il pannello mostra un form:

  • Container Name: nome univoco (es. redis-prod)
  • Automatic start after the system reboot: avvio automatico al reboot
  • Port Mapping: mappa porte host:container (es. 6379:6379)
  • Volumes: monta directory host nel container (es. /data:/data)
  • Environment Variables: variabili passate al container
  • Memory limit: limite RAM (es. 256MB)
  • Command override: comando di avvio personalizzato

Cliccare OK per avviare.

Esposizione automatica porte

Plesk gestisce automaticamente l'esposizione delle porte container. Importante: per default Plesk fa il bind solo su 127.0.0.1 (loopback), non sull'IP pubblico. Questo e' un comportamento di sicurezza: il container e' accessibile solo dal server stesso.

Per esporlo all'esterno, spuntare Public nella port mapping. Attenzione: assicurarsi che il container sia configurato in modo sicuro (autenticazione, TLS).

Reverse proxy

Lo scenario tipico e' avere un container con un'app web (es. una dashboard, un tool come Portainer) ed esporlo tramite un dominio Plesk via reverse proxy.

  1. Container espone porta 127.0.0.1:8080
  2. Subdomain tool.dominio.it creato in Plesk
  3. In Apache & nginx Settings aggiungere:
    ProxyPass / http://127.0.0.1:8080/
    ProxyPassReverse / http://127.0.0.1:8080/
  4. SSL automatico con Let's Encrypt

Gestione lifecycle

Per ogni container il pannello offre:

  • Restart: riavvia
  • Stop: ferma
  • Remove: rimuove (i volumi persistono se mappati)
  • Logs: visualizza l'output del container
  • Recreate: ricrea con la stessa configurazione (utile per update immagine)

Update immagine

Per aggiornare un container alla nuova versione dell'immagine:

  1. Pull dell'ultima immagine: cliccare Pull sull'immagine nel catalog
  2. Recreate del container: cliccare Recreate

I dati persistono nei volumi mappati.

Casi d'uso comuni

  • Redis per cache: redis:7-alpine con volume /data
  • MongoDB: mongo:7 con volume e env MONGO_INITDB_ROOT_PASSWORD
  • Elasticsearch: elasticsearch:8 con discovery.type=single-node
  • Portainer per gestire Docker da UI: portainer/portainer-ce
  • Mailpit per testing email in staging

Limiti e considerazioni

L'estensione Docker di Plesk e' adatta per container singoli e setup semplici. Per scenari complessi (multi-container, compose, swarm) e' meglio usare Docker direttamente da SSH o strumenti dedicati.

Docker compose

L'estensione Plesk Docker NON supporta nativamente docker-compose. Per setup multi-container complessi installare compose da CLI:

dnf install docker-compose-plugin
docker compose up -d

I container avviati da compose non appaiono nel pannello Plesk ma sono gestibili da CLI.

Networking custom

Plesk Docker crea container nella rete default. Per isolamento e comunicazione tra container creare reti dedicate:

docker network create my-app-net
docker run --network my-app-net ...

Storage volumes

Per persistenza dati usare named volumes invece di bind mount:

docker volume create redis-data
docker run -v redis-data:/data redis:7

I named volumes sono gestiti da Docker e sopravvivono a remove/recreate dei container.

Sicurezza dei container

  • Usare sempre immagini ufficiali da Docker Hub
  • Verificare la presenza di tag con versione (no "latest" in produzione)
  • Limitare risorse (memory, CPU)
  • Run come non-root quando possibile
  • Aggiornare le immagini regolarmente per security patches

Backup dei container

Plesk backup non include i container Docker. Per backup dedicati:

docker commit container-id backup-image:$(date +%F)
docker save backup-image:$(date +%F) | gzip > backup.tar.gz

Monitoring container

Per monitoring real-time:

docker stats
docker logs -f container-name

Per monitoring centralizzato considerare Portainer, cAdvisor o Prometheus + Grafana.

Update strategy

Per minimizzare downtime durante update di un container critico:

  1. Pull della nuova immagine
  2. Start del nuovo container con porta diversa
  3. Test del nuovo container
  4. Switch del reverse proxy verso la nuova porta
  5. Stop del vecchio container

Esempi di stack tipici

Stack monitoring: Prometheus + Grafana + Loki, tutti container Docker, esposti via reverse proxy Plesk per monitoring.dominio.it.

Stack messaging: RabbitMQ + Redis come container, usati come backend per code Celery/BullMQ dell'app principale Plesk.

Stack search: Elasticsearch + Kibana per logging centralizzato e ricerca full-text.

Limiti CPU e memoria

Sempre impostare limiti per evitare che un container malformato consumi tutte le risorse:

docker run --memory=512m --cpus=1.0 ...

Plesk Docker permette la stessa configurazione dal pannello in Memory limit e CPU shares.

Health check Docker

Docker supporta health check nativi:

HEALTHCHECK --interval=30s --timeout=3s \
  CMD curl -f http://localhost/health || exit 1

Container unhealthy possono essere automaticamente restartati da Docker stesso o da orchestrator esterni.

Hai bisogno di aiuto?

Se vuoi gestione Plesk dal team di G Tech Group, scrivici tramite il modulo di contatto.

Hai trovato utile quest'articolo?