Introducción a Portainer
Portainer es una interfaz gráfica de usuario (GUI) diseñada para simplificar la gestión de entornos Docker. Permite administrar múltiples nodos, contenedores, redes y volúmenes desde un panel de control centralizado, evitando la dependencia exclusiva de la línea de comandos (CLI) y facilitando la monitorización de servicios.
Despliegue del Servidor Portainer
Para centralizar la gestión, primero debemos instalar la instancia principal del servidor. A continuación, se presenta un archivo docker-compose.yml optimizado para desplegar la edición comunitaria (CE), ajustando los puertos para evitar colisiones con otros servicios web existentes.
version: '3.8'
services:
portainer_server:
image: portainer/portainer-ce:latest
container_name: dashboard-portainer
restart: always
ports:
- "18000:8000"
- "19443:9443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer_cfg:/data
volumes:
portainer_cfg:
En esta configuración, el puerto 19443 se utiliza para el acceso seguro mediante HTTPS, mientras que el volumen local asegura la persistencia de los datos de configuración y usuarios.
Gestión de Nodos Remotos
Para controlar contenedores en servidores distintos al que aloja Portainer, es necesario desplegar un componente ligero denominado Portainer Agent en cada nodo remoto.
Instalación del Agente
El agente permite que la instancia principle se comunique de forma segura con el motor de Docker de otros hosts. El siguiente archivo de configuración debe ejecutarse en cada servidor que se desee monitorizar:
version: '3.8'
services:
node_agent:
image: portainer/agent:latest
container_name: portainer-remote-agent
restart: unless-stopped
ports:
- "9001:9001"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/lib/docker/volumes:/var/lib/docker/volumes
Una vez que el agente esté en ejecución, se puede añadir el nuevo entorno desde el panel principal de Portainer introduciendo la dirección IP del servidor remoto y el puerto 9001.
Seguridad y Mecanismo de Firmas
El Portainer Agent implementa un sistema de seguridad basado en la verificación de firmas para prevenir conexiones no autorizadas. El proceso funciona de la siguiente manera:
- Asociación inicial: Al arrancar por primera vez, el agente espera una solicitud de una instancia de Portainer.
- Registro de llave pública: El agente captura la llave pública enviada en la cabecera
X-PortainerAgent-PublicKeydel primer servidor que establece contacto exitoso. - Bloqueo de comunicación: Una vez asociado, el agente solo aceptará peticiones firmadas con esa llave específica. Cualquier intento de conexión desde otra instancia de Portainer será rechazado, mostrando una advertencia de seguridad.
Este mecanismo garantiza que, una vez configurado el entorno, el control sobre los contenedores del nodo remoto sea exclusivo de la instancia central autorizada.
Ventajas de la Gestión Visual
El uso de esta herramienta permite acceder rápidamente a los logs de los contenedores, inspeccionar el estado de los recursos en tiempo real y realizar despliegues de Stacks (Docker Compose) de forma remota sin necesidad de acceder mediante SSH a cada máquina individualmente, optimizando el flujo de trabajo en infraestructuras distribuidas.