Portainer es una interfaz web para gestionar Docker y Kubernetes. Permite a técnicos menos familiarizados con la línea de comandos gestionar contenedores, imágenes, volúmenes y stacks desde un navegador, sin memorizar comandos Docker. También es útil para administradores que quieren visibilidad visual rápida.
Instalación
docker volume create portainer_data
docker run -d \
--name portainer \
--restart=always \
-p 8000:8000 \
-p 9443:9443 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
Qué puedes hacer desde Portainer
Gestión de contenedores
Desde Containers puedes:
- Ver todos los contenedores (activos y parados) con CPU/RAM en tiempo real
- Iniciar, parar, reiniciar y eliminar contenedores
- Acceder a los logs con filtros y búsqueda
- Abrir una consola dentro del contenedor (equivalente a
docker exec -it) - Ver las variables de entorno, volúmenes montados y puertos expuestos
Stacks (Docker Compose desde la web)
Stacks → Add stack → pega tu docker-compose.yml directamente en el editor web:
version: '3.8'
services:
web:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
db:
image: postgres:16-alpine
environment:
POSTGRES_PASSWORD: secreto
volumes:
- db_data:/var/lib/postgresql/data
volumes:
db_data:
Portainer despliega, actualiza y gestiona el stack completo desde la interfaz.
Registros de imágenes privados
Registries → Add registry: conecta con Docker Hub, GitHub Container Registry, GitLab Registry o un registro privado para hacer pull/push desde la interfaz.
Redes y volúmenes
Desde Networks y Volumes puedes crear, inspeccionar y eliminar redes y volúmenes sin comandos.
Gestionar múltiples hosts Docker (Edge Agents)
Portainer puede gestionar Docker en otros servidores remotos:
docker run -d \
--name portainer_agent \
--restart=always \
-p 9001:9001 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/lib/docker/volumes:/var/lib/docker/volumes \
portainer/agent:latest
En la UI de Portainer (servidor principal): Environments → Add environment → Docker Standalone → introduce la IP y puerto 9001 del agente.
Ahora tienes todos tus servidores Docker en un único panel de control.
Actualizaciones de contenedores con Watchtower
Para mantener los contenedores actualizados automáticamente:
docker run -d \
--name watchtower \
--restart=unless-stopped \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--schedule "0 0 4 *" \ # todos los días a las 4:00
--cleanup # eliminar imágenes viejas
O desde Portainer: despliega Watchtower como un stack más.
Portainer BE vs CE
| Característica | CE (gratuita) | BE (de pago) |
| Gestión Docker | ✓ | ✓ |
| Stacks | ✓ | ✓ |
| Control de acceso básico | ✓ | ✓ |
| RBAC avanzado | ✗ | ✓ |
| GitOps (sincronizar stacks con repo) | ✗ | ✓ |
| Kubernetes avanzado | Limitado | Completo |
Para home labs y pymes, CE es más que suficiente.
Acceso seguro: Nginx + SSL delante de Portainer
server {
listen 443 ssl http2;
server_name portainer.miempresa.local;
ssl_certificate /etc/letsencrypt/live/portainer.miempresa.local/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/portainer.miempresa.local/privkey.pem;
location / {
proxy_pass https://127.0.0.1:9443;
proxy_ssl_verify off; # Portainer usa certificado autofirmado
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Portainer reduce la barrera de entrada para gestionar Docker: el equipo de desarrollo puede desplegar sus aplicaciones sin necesitar acceso SSH al servidor, y los administradores tienen visibilidad visual del estado de todos los contenedores. Para entornos con múltiples servidores Docker, la capacidad de gestionarlos todos desde un único panel es especialmente valiosa.
