
Portainer: aggiornare la tua istanza Docker in modo semplice
Come aggiornare in sicurezza la tua istanza di Portainer con un semplice script bash, senza perdere container o volumi.
Portainer è uno strumento davvero comodo per gestire i tuoi container, volumi e reti Docker da interfaccia web.
Una delle cose che può spaventare all’inizio è come si aggiorna Portainer. In realtà è molto semplice e non dovresti perdere alcun dato.
Io uso Linux Ubuntu/Debian, quindi nel tuo caso le cose potrebbero essere leggermente diverse, ma dovrebbe essere facile adattare lo script. Puoi creare uno script semplice come questo:
#!/bin/bash
sudo docker pull portainer/portainer-ce
sudo docker stop portainer
sudo docker rm portainer
sudo docker run --name portainer --restart=unless-stopped -d -p 8000:8000 -p 9000:9000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data portainer/portainer-ce
Lo script si occupa di:
- aggiornare l’immagine locale di Portainer
- fermare il container
- rimuoverlo (non il volume con i dati)
- avviare il nuovo container
Puoi salvarlo in ~/.local/bin con il nome update-portainer e poi dargli i permessi di esecuzione (con chmod +x ~/.local/bin/update-portainer).
Da quel momento ti basterà lanciare update-portainer da bash e il tuo container Portainer verrà aggiornato.
Prima di aggiornare: un backup extra del volume
Lo script sopra non tocca il volume portainer_data, quindi i tuoi dati restano al sicuro negli aggiornamenti normali. Se vuoi comunque un backup di sicurezza prima di un aggiornamento importante (es. un major bump), puoi esportare il volume in un tar:
docker run --rm -v portainer_data:/data -v $(pwd):/backup alpine \
tar czf /backup/portainer_data_backup.tar.gz -C /data .
Controlla le release notes prima di aggiornare
Prima di lanciare lo script, dai un’occhiata alle release notes di Portainer: a volte una major version porta breaking change nella configurazione o richiede una migrazione manuale del database interno.
Se usi già Docker Compose
Se il tuo Portainer è già gestito con docker-compose.yml invece che con un docker run singolo, l’aggiornamento si riduce a:
docker compose pull portainer
docker compose up -d portainer
Stesso risultato, comando ancora più corto.
Facile. Se usi anche WordPress su Docker, ho scritto anche una guida su come creare lo stack con wpdockerize.
Buona giornata!

Co-Fondatore & CTO presso PAPION. Senior full-stack engineer specializzato in React, TypeScript, Node.js e sicurezza applicativa.