Portainer.io es una plataforma de administración para Docker, Kubernetes, y otros entornos de contenedores. Facilita la gestión de entornos de contenedores a través de una interfaz gráfica de usuario (GUI), lo que permite a los usuarios interactuar con Docker sin necesidad de utilizar la línea de comandos.
Características clave de Portainer para Docker:
Gestión de contenedores:
- Puedes crear, eliminar, detener e iniciar contenedores desde la interfaz de usuario.
- Proporciona visibilidad completa de los contenedores que están en ejecución, sus logs y estadísticas.
Administración de imágenes:
- Portainer te permite administrar tus imágenes de Docker, realizar búsquedas en Docker Hub y desplegar contenedores a partir de esas imágenes.
- Puedes eliminar imágenes no utilizadas, reducir espacio en disco y gestionar imágenes almacenadas localmente.
Gestión de volúmenes:
- Permite crear, listar y eliminar volúmenes fácilmente, lo que facilita la gestión de datos persistentes asociados a los contenedores.
Gestión de redes:
- Puedes crear, visualizar y administrar redes de Docker, lo que te permite controlar cómo se comunican tus contenedores entre sí.
Soporte para Docker Swarm:
- Portainer también soporta Docker Swarm, lo que permite a los usuarios administrar clústeres de Docker. Puedes gestionar stacks, servicios y nodos desde la interfaz de usuario.
Stacks y Compose:
- Puedes desplegar stacks directamente desde archivos Docker Compose. Esto facilita la configuración de entornos multi-contenedor y servicios de manera rápida.
Seguridad y usuarios:
- Permite la creación y administración de usuarios y equipos, lo que ayuda a controlar el acceso al entorno de Docker. Puedes establecer roles y permisos para diferentes usuarios.
- Soporte para autenticación con LDAP, Active Directory, y autenticación OAuth.
Monitorización y logs:
- Portainer ofrece visualización en tiempo real del rendimiento de tus contenedores, así como acceso fácil a sus logs para la resolución de problemas.
Compatibilidad multi-plataforma:
- Portainer es compatible con Docker CE, Docker EE, Docker Swarm, Kubernetes, Azure ACI, y Nomad.
Ventajas de usar Portainer:
- Facilidad de uso: Proporciona una manera intuitiva y fácil de usar para gestionar Docker sin necesidad de dominar la línea de comandos.
- Productividad: Permite a los equipos de desarrollo y operaciones trabajar de manera más rápida y eficiente en la gestión de entornos de contenedores.
- Accesibilidad: Se puede acceder a Portainer a través de un navegador web desde cualquier dispositivo, lo que lo convierte en una herramienta conveniente para administrar clústeres de Docker remotamente.
Instalacion
Primero, cree el volumen que Portainer Server utilizará para almacenar su base de datos:
docker volume create portainer_data
A continuación, verificamos que el volumen Docker llamado ‘portainer_data’ existe:
docker volume ls
A continuación, descargue e instale el contenedor Portainer Server:
docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:2.21.2
A continuación, comprobamos si el contenedor Docker llamado ‘Portainer’ está en funcionamiento:
docker ps
En caso de que se dece instalar todo nuevamente
- docker stop portainer
- docker rm portainer
- docker volume rm portainer_data
- docker volume create portainer_data
- docker volume ls
- docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:2.21.2
- docker ps
para detener portainer
docker stop portainer
ejecutarlo nuevamente portainer
docker start portainer
Configurar el servidor Portainer en Docker
Si el servidor Portainer se ha instalado correctamente, la interfaz web de Portainer es accesible en el host local en el puerto especificado. En nuestro caso, es el puerto 9000. Ahora es el momento de configurar el servidor Portainer.
Al acceder por primera vez a la interfaz web de Portainer, se nos pide que creemos un usuario administrador.
Establecemos el nombre de usuario y la contraseña para el usuario administrador del Portainer. Por razones de seguridad, evitamos el nombre por defecto “admin” y utilizamos en su lugar “portadmin”.
Después de iniciar la sesión como usuario administrador, llegamos al asistente de configuración rápida de la interfaz web de Portainer. Además del entorno Docker local, se pueden añadir entornos remotos.
Agente de Docker en Portainer
El agente de Docker en Portainer es un componente que facilita la conexión entre múltiples nodos de Docker y el servidor de Portainer. El agente está diseñado para funcionar en entornos distribuidos, como clústeres de Docker Swarm o múltiples nodos Docker Standalone, y permite que el servidor de Portainer gestione estos entornos de forma remota. Es una parte fundamental en la administración de nodos Docker que no están en el mismo host donde está corriendo Portainer Server.
Funciones principales del agente:
Comunicación entre Portainer Server y nodos remotos:
El agente actúa como un intermediario que permite a Portainer Server conectarse a Docker en otros hosts. A través del agente, Portainer Server puede enviar comandos y recibir información sobre contenedores, imágenes, volúmenes y redes en esos nodos.
Compatibilidad con entornos distribuidos:
En entornos de Docker Swarm, donde existen múltiples nodos trabajando juntos, el agente asegura que Portainer pueda administrar todo el clúster de forma centralizada, proporcionando una vista unificada del estado y configuración de los contenedores distribuidos.
Mejora de la seguridad:
En lugar de exponer directamente la API de Docker a través de la red, el agente proporciona una forma más segura de conectar Portainer con otros hosts de Docker, lo que ayuda a minimizar posibles vectores de ataque.
Gestión eficiente de los recursos:
Permite a Portainer Server delegar las tareas de recolección de datos y ejecución de comandos a los agentes instalados en los nodos, lo que optimiza el rendimiento y la carga sobre el servidor central de Portainer.
Escenarios de uso:
- Docker Swarm: Cuando usas Docker en modo Swarm, cada nodo (máquina o instancia) del clúster puede tener su propio agente instalado. Esto permite a Portainer controlar todos los nodos de forma centralizada.
- Múltiples hosts Docker: Si gestionas varios servidores Docker independientes, el agente se instala en cada uno de ellos para que Portainer pueda administrarlos todos desde un único dashboard.
Instalación:
El agente se instala en los nodos Docker mediante un contenedor Docker, lo que facilita su despliegue. Una vez desplegado, se conecta automáticamente al servidor de Portainer y le permite gestionar el nodo correspondiente.
docker volume create portainer_data
docker run -d -p 9443:9443 --name portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
Antes de comenzar a analizar en detalle su implementación, veamos un ejemplo de implementación de producción de Portainer. En este ejemplo, Portainer administra varios entornos desde una interfaz de administración en un clúster de administración. La autenticación la proporciona un proveedor de OAuth externo, la interfaz de usuario de Portainer está protegida con SSL y listas blancas de IP para el acceso. Los entornos remotos se administran con el agente de Portainer y el agente perimetral cuando corresponde, con firewalls configurados solo para el acceso necesario, y la configuración del servidor de Portainer se respalda en un depósito de S3 a diario.

Al crear una implementación de Portainer lista para producción, la primera decisión crucial que deberá tomar es cómo diseñar su infraestructura de administración. Existen dos opciones básicas:
- Implemente el servidor Portainer en un entorno de administración dedicado (recomendado).
- Implemente el servidor Portainer dentro de uno de los entornos que también administrará.
En esta lección cubriremos cada una de las opciones anteriores en detalle y analizaremos los pros y los contras de cada enfoque.
Recomendado: Un entorno de gestión dedicado
Si bien es posible ejecutar Portainer junto con su carga de trabajo en un entorno en contenedores, para las implementaciones de producción recomendamos encarecidamente configurar un entorno de administración dedicado que ejecute solo el servidor Portainer y ninguna carga de trabajo de producción real. De esta manera, el sistema de administración puede administrar todos sus entornos de aplicaciones sin verse afectado por ellos.
Por ejemplo, si estuviera ejecutando el servidor Portainer en un nodo de su entorno de aplicación y ese nodo dejara de funcionar, no podría usar Portainer para administrar ese nodo ni ningún otro nodo o entorno. Con un nodo independiente, puede administrar sus implementaciones sin preocuparse por esta situación.
De la misma manera, si su entorno de administración dejara de funcionar, no afectaría a sus entornos de producción en esta configuración. Sus aplicaciones seguirían funcionando sin verse afectadas y, una vez que pueda volver a poner en línea su entorno de administración, podrá retomar las tareas desde donde las dejó.
Este enfoque también ofrece posibles mejoras de seguridad. Con un entorno de administración dedicado, los usuarios de Portainer nunca se conectarán directamente a los entornos de producción de ninguna manera; toda la actividad se enrutará a través de Portainer. El acceso a la administración solo deberá configurarse en el entorno de administración, y el agente de Portainer se encargará de la comunicación entre los entornos de producción y la interfaz de administración.
El principal inconveniente de esta configuración es que requiere la configuración de un entorno de gestión independiente, lo que puede generar costos adicionales y posibles gastos de gestión y mantenimiento. En algunas situaciones, esto puede no ser deseable o factible, en cuyo caso el servidor Portainer se puede ejecutar en un entorno existente.
Alternativa: Instalar Portainer Server dentro de uno de los entornos que también administrará
Si no es posible ejecutar un entorno de administración dedicado, puede ejecutar Portainer Server junto con su flujo de trabajo en un entorno que también administrará. Este es nuestro enfoque recomendado para escenarios de desarrollo o prueba, ya que utiliza menos recursos que ejecutar un entorno dedicado, pero existen desventajas que se deben considerar con este enfoque.
En primer lugar, cuando se ejecuta junto con su flujo de trabajo, existe la posibilidad de que su acceso se vea obstaculizado por sus implementaciones. Si el nodo que ejecuta el servidor Portainer tiene una carga pesada de su aplicación, esto puede limitar la capacidad de usar Portainer para administrarlo. Si bien creamos Portainer para que sea lo más eficiente y eficiente posible, requiere algunos recursos para funcionar y, si esos recursos no están disponibles, el rendimiento puede verse afectado.
Además, si el nodo que ejecuta el servidor Portainer deja de funcionar, no tendrá acceso a Portainer para ayudar a solucionar el problema hasta que ese nodo vuelva a funcionar. En un entorno de desarrollo, esto es una preocupación menor, pero podría ser un problema importante para las implementaciones de producción.
Para que los usuarios puedan administrar sus entornos con Portainer, deberán poder iniciar sesión en Portainer. Esto se hace generalmente a través de nuestra interfaz web, cuyo acceso deberá configurarse en su firewall. Abrir un puerto de administración web en un entorno de producción puede ser un riesgo de seguridad y no sería necesario si el servidor Portainer se estuviera ejecutando en un entorno independiente.
url:
- https://www.ionos.mx/digitalguide/servidores/configuracion/instalar-portainer-en-docker/
- https://academy.portainer.io/install/#/lessons/KFFbWJs2VcFzs4aKHf0sE-lIT2AGWYsp