Dilluns, març 9, 2026
VIRTUALITZACIÓ

Portainer: administra contenidors des del navegador

Portainer és una interfície web que permet gestionar entorns Docker i Kubernetes sense necessitat de recórrer contínuament a la terminal. Tot i que està orientat principalment als qui busquen una alternativa més visual per operar contenidors, també resulta útil per a equips mixtos, tasques de monitorització, manteniment bàsic o situacions on l’ accés shell està limitat.

Què resol Portainer i quan convé fer-lo servir?

Portainer no pretén reemplaçar la terminal ni abstreure completament Docker. Serveix per visualitzar, inspeccionar i mantenir contenidors, imatges, volums, xarxes i stacks de forma directa. És especialment útil en aquests casos:

  • Monitorització visual de contenidors a servidors sense monitorització avançada.
  • Equips on algunes persones no gestionen bé Docker des del terminal.
  • Ambients de proves o staging on convé tenir visibilitat ràpida.
  • Gestió de stacks o desplegaments on es vol controlar versions sense reescriure YAML cada vegada.
  • Verificació de logs o estats sense connexió SSH constant.

No és una solució d’orquestració ni un panell d’administració de sistemes. El seu abast és limitat a l’entorn de contenidors on està instal·lat. Però aquest abast és suficient en moltes situacions on es necessita inspecció ràpida, sense exposició directa al sistema operatiu.

Desplegament bàsic amb Docker

La forma més directa de desplegar Portainer és fent servir Docker. Es recomana executar-lo com a contenidor separat, amb accés al socket Docker del host. Això permet gestionar l’entorn de contenidors directament des de la interfície web.

Comandament recomanat per a instal·lació:

docker volume create portainer_data
 
docker run -d \
  -p 9443:9443 \
  -p 8000:8000 \
  --name portainer \
  --restart=always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:latest

Explicació de cada paràmetre:

  • -p 9443:9443: exposa el panell web a HTTPS.
  • -p 8000: 8000: necessari només si es connectarà a agents externs.
  • –restart = always: reinicia Portainer si el sistema es reinicia.
  • -v /var/run/docker.sock:/var/run/docker.sock: permet a Portainer comunicar-se amb el motor Docker.
  • -v portainer_data:/data: volum persistent amb la configuració i usuaris.

Aquest desplegament inicial permet accés complet a l’ entorn Docker local. Si estàs en un entorn de proves, pot funcionar sense més ajustos. En producció o entorns compartits, hi ha consideracions addicionals.

Primer accés i configuració inicial

Un cop iniciat el contenidor, accedeix a https://<IP-servidor>: 9443. La primera vegada, es demanarà definir l’ usuari administrador i contrasenya.

Després d’ iniciar sessió:

  • Apareixerà l’opció per connectar l’entorn local (anomenat local).
  • Selecciona “Docker” si estàs fent servir el socket directament.
  • No cal configurar agents si només gestionaràs el host local.

En aquest punt, ja es té accés complet a l’entorn Docker.

Gestió de contenidors: accions útils des de la interfície

Veure estat i recursos

Des del panell de contenidors es pot veure:

  • Estat: executant, detingut, reiniciant, etc.
  • Ports exposats.
  • Ús de CPU i memòria en temps real (limitat al que exposa Docker).
  • Comandament d’ execució.

Això permet detectar contenidors que estan consumint recursos anòmalament o que van ser mal configurats.

Inspecció ràpida

Cada contenidor pot inspeccionar-se des de la interfície, sense necessitat de docker inspect. Això és útil per a:

  • Veure variables d’ entorn.
  • Comprovar volums muntats.
  • Revisar arguments d’ execució.
  • Confirmar la imatge usada.

Registres del terminal

El visor de logs de Portainer permet consultar la sortida dels contenidors, amb opció de veure en temps real o revisar l’històric recent.

Això estalvia temps davant d’executar docker logs <container> diverses vegades. El visor permet triar la quantitat de línies, seguir la sortida o aplicar filtres bàsics.

Crear i modificar contenidors

Portainer permet crear contenidors des de zero o a partir d’imatges disponibles.

Avantatges de l’ editor gràfic:

  • No cal recordar tots els paràmetres de docker run.
  • Les opcions estan organitzades per seccions: xarxa, volums, entorn, ports, etc.
  • És més difícil ometre paràmetres importants com polítiques de reinici o enllaços de xarxa.

Decisió clau: docker run vs stacks

Crear contenidors directament està bé per a proves ràpides o serveis senzills. Si es busca una cosa més mantenible, convé fer servir stacks, que permeten definir desplegaments amb arxius docker-compose.yml.

Gestió d’ stacks: desplegament controlat sense terminal

El sistema d’ stacks permet definir serveis complets a partir d’ arxius YAML. Portainer els interpreta i executa fent servir Docker Compose o Swarm (segons configuració de l’entorn).

Avantatges:

  • L’ arxiu YAML pot mantenir-se en un repositori.
  • Permet reversionar fàcilment serveis.
  • És més net per a desplegaments que depenen de múltiples contenidors, xarxes o volums.

Desavantatges:

  • L’edició des del navegador és limitada (no hi ha validació avançada).
  • No es poden aplicar plantilles complexes amb lògica condicional.
  • No detecta automàticament canvis en arxius YAML externs.

Recomanació:

  • Per a entorns controlats: editar directament a Portainer.
  • Per a desplegaments repetibles: mantenir el YAML a Git i copiar-lo a Portainer quan sigui necessari.

Gestió d’ imatges: neteja i organització

Des de la secció d’ imatges és possible:

  • Descarregar noves imatges des de Docker Hub.
  • Eliminar imatges no utilitzades.
  • Veure quins contenidors estan fent servir cada imatge.

Això és útil a servidors on el disc s’omple amb imatges antigues. Portainer no executa docker image prune automàticament, però permet eliminar imatges individualment amb menys risc que des de terminal.

Xarxes i volums

Portainer permet veure les xarxes creades per Docker (bridge, host, overlay, etc.) i associar contenidors a elles. També permet crear xarxes personalitzades, definir subxarxes o comprovar col·lisions de ports.

Pel que fa a volums:

  • Es poden crear des de la interfície.
  • És possible inspeccionar quins contenidors els fan servir.
  • Es pot muntar el volum directament des de la configuració de contenidors o stacks.

No permet navegar el contingut dels volums. Per a això, continua sent necessari accedir des de shell o muntar el volum manualment en un altre contenidor.

Usuaris i control d’ accés

Portainer permet definir usuaris locals i rols:

  • Administrador: accés complet.
  • Usuari estàndard: limitat als endpoints assignats.
  • Custom rols: disponibles només a la versió empresarial.

En entorns compartits, és possible limitar quins usuaris poden veure o gestionar certs stacks o contenidors. Això no substitueix un sistema d’ autenticació centralitzat, però pot ser suficient per a entorns petits.

Actualitzacions i manteniment

Portainer no s’actualitza automàticament. Per fer-ho manualment:

docker pull portainer/portainer-ce:latest
docker stop portainer
docker rm portainer
docker run ... # mateix comandament inicial

És important mantenir el volum portainer_data per conservar usuaris i configuracions.

Abans d’actualitzar, es recomana revisar la pàgina de releasses per veure canvis potencialment incompatibles.

Limitacions tècniques

  • Wayland: en escriptoris Linux moderns, obrir el navegador pot tenir problemes de port forwarding. No és un problema de Portainer en si, però afecta si fas servir eines tipus localhost tunneling.
  • Websockets inestables: alguns proveïdors cloud tallen connexions WebSocket, cosa que afecta el visor de logs.
  • No reemplaça Prometheus ni Grafana: la monitorització és superficial.
  • No hi ha terminal interactiva completa: permet comandaments simples, però no reemplaça SSH ni terminal persistent.

Connexions remotes: gestió de múltiples hosts

Portainer pot gestionar múltiples entorns Docker, no només el host local. Per a això, ofereix diverses opcions:

1. Connexió directa al socket remot

Només recomanable a xarxes segures i controlades. Exposar /var/run/docker.sock per TCP pot obrir una porta completa al sistema.

Exemple de configuració en el host remot:

dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

Això exposa el socket pel port 2375 sense xifrat. Si no es configura adequadament amb TLS, és un risc seriós.

Alternativa segura: fer servir agents.

2. Ús de l’agent de Portainer

Portainer proporciona un petit binari (agent) que s’executa com a contenidor als hosts remots. És la forma recomanada de connectar entorns distribuïts.

Instal·lació a l’host remot:

docker run -d \
  -p 9001:9001 \
  --name portainer_agent \
  --restart=always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /var/lib/docker/volumes:/var/lib/docker/volumes \
  portainer/agent

Després, al panell principal de Portainer, es pot afegir un nou “endpoint” remot fent servir el mode “Agent”, introduint la IP i el port 9001 del host remot.

Aquesta arquitectura permet:

  • Separar entorns de producció i proves.
  • Delegar accés limitat a entorns específics.
  • Gestionar nodes remots sense exposar directament els seus sockets.

3. Agents perifèrics

Per a entorns més complexos o si es treballa amb dispositius en xarxes canviants (IoT, oficines sense accés directe), Portainer permet fer servir “edge agents” que es connecten al panell central de forma inversa.

Això requereix configuració prèvia, tokens i obertures específiques de ports sortints. Només convé en casos on no hi ha accés directe per xarxa tradicional. En la majoria d’ entorns autoallotjats o VPS, l’ agent estàndard és suficient.

Checklist tècnic de desplegament i operació segura

Instal·lació inicial:

  • Crear volum persistent (portainer_data).
  • Executar contenidor amb accés al socket Docker.
  • Verificar accés per HTTPS (https://IP:9443).
  • Crear usuaris amb contrasenya segura.

Configuració bàsica:

  • Connectar entorn local.
  • Crear almenys un stack de prova.
  • Provar logs, reinici i parada de contenidors des de la interfície.
  • Eliminar una imatge no feta servir des de la pestanya d’ imatges.

Seguretat mínima:

  • No exposar el port 9443 a Internet sense firewall.
  • Fer servir HTTPS i canviar el port si s’ exposa públicament.
  • No connectar per TCP sense TLS (dockerd -H) llevat que estigui a VPN.
  • Afegir usuaris amb permisos limitats si el panell és compartit.

Desplegament a producció (si s’aplica):

  • Fer servir stacks en comptes de contenidors.
  • Versionar els arxius docker-compose.yml fora de l’ entorn.
  • Mantenir Portainer actualitzat manualment amb docker pull.

Recomanacions

Crear contenidors amb polítiques de reinici

En crear contenidors des de Portainer, l’opció de política de reinici no està marcada per defecte. Això fa que qualsevol reinici del sistema deixi els serveis caiguts si no s’especifica: always.

Evita aquest error: assegura’t de configurar això en crear el contenidor, especialment si és un servei permanent.

Visualització incompleta de xarxes personalitzades

Portainer de vegades no mostra correctament xarxes overlay o connexions entre contenidors si no han estat creades des de la seva interfície. En aquests casos, la terminal continua sent necessària per veure detalls més precisos (docker network inspect <red>).

Problemes comuns amb la interfície

  • No carrega el visor de logs: revisa que no hi hagi un proxy bloquejant WebSocket.
  • No apareixen contenidors nous: si crees contenidors fora de Portainer, de vegades triga a actualitzar. Fes servir el botó de “Refresh”.
  • Conflictes de ports: si dos stacks exposen el mateix port, Portainer no dona error clar en desplegar. El contenidor simplement no inicia.

Donar suport a la configuració de Portainer

Tot i que el volum portainer_data guarda usuaris i endpoints, no guarda els arxius YAML dels stacks si els edita dins la interfície.

Recomanació: guarda sempre les teves definicions docker-compose.yml externament, en un repositori o carpeta compartida.

Integració amb CI/CD: el que pot i no pot fer

Portainer no està dissenyat per a integrar-se directament a pipelines. No exposa endpoints REST públics sense autenticació complexa, i no permet actualitzar stacks des d’arxius externs automàticament.

Si necessites això, hauràs de:

  • Fer servir eines com GitLab CI o ArgoCD per controlar el desplegament.
  • Tractar Portainer com a panell de lectura o per a operacions puntuals.

Alternatives i quan no fer servir Portainer

Casos on Portainer no aporta:

  • Desplegaments completament automatitzats amb CI/CD i Ansible.
  • Monitorització detallada de mètriques (fes servir Prometheus/Grafana).
  • Orquestració amb Kubernetes sense necessitat de panell gràfic (fes servir kubectl o Lens).
  • Ambients on s’ exigeix control d’ accés centralitzat o SSO.

Alternatives rellevants:

  • Cockpit + Docker plugin: si ja fas servir Cockpit per administrar el servidor.
  • Rancher: per a gestió de Kubernetes amb control més avançat.
  • DockStation (GUI local per a Docker).
  • Lens: per a administració visual de clústers Kubernetes.

Resum operatiu

Portainer serveix per reduir la fricció en tasques repetitives o visuals sobre contenidors. No reemplaça les bones pràctiques d’ infraestructura, ni és adequat per a tots els entorns, però cobreix amb solvència:

  • Consultes ràpides sobre estat, logs, ports i configuracions.
  • Gestió de múltiples contenidors o stacks.
  • Control d’ accés bàsic entre diversos usuaris.
  • Revisió i eliminació d’ imatges o volums innecessaris.

La seva utilitat real es valora quan es requereix mantenir serveis simples sense delegar en orquestradors complets ni mantenir massa lògica de scripts. És una eina que, usada amb criteri, redueix errors i fa més visibles els detalls que des de terminal requereixen diversos comandaments.

No és una solució integral, però sí un component útil quan es busca control visual sense sacrificar l’accés directe.

Recursos útils:

docker run --rm -v portainer_data:/data -v $(pwd):/backup alpine tar czf /backup/portainer_backup.tar.gz /data
  • Actualitzar sense perdre dades:
docker pull portainer/portainer-ce:latest
docker Stop Portainer
docker RM Portainer
docker run ... (amb mateix volum i configuració)

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *