CONTENIDO

 

1. ¿Qué es Portainer?

Portainer es una herramienta de administración de contenedores basada en una interfaz gráfica de usuario (GUI) que simplifica la gestión de entornos Docker y Kubernetes. Es ideal tanto para principiantes como para administradores experimentados, ya que permite administrar contenedores, imágenes, redes y volúmenes de forma intuitiva y sin necesidad de utilizar la línea de comandos.

 

2. Requisitos previos

  • Tener acceso a internet.
  • Contar con una instalación previa de Docker.
  • Contar con una instalación previa de Portainer.

 

3. Acceso a Portainer

Lo primero de todo, es acceder a la instancia de Portainer desde el navegador, normalmente se hace a través de la siguiente URL (modificando <IP-Host> con los datos correspondientes):

$ https://<IP-Host>:9443/

 

 

4. Dashboard (Panel principal)

Desde el dashboard, se puede visualizar información sobre:

  • Los recursos con los que cuenta docker.
  • Stacks.
  • Containers
  • Images
  • Volumes
  • Networks

 

4.1. Stacks

Los stacks son agrupaciones lógicas y funcionales de uno o varios contenedores de docker, que se gestionan de forma conjunta a través de un archivo de configuración en formato YAML, comunmente llamado docker-compose.yml.

 

¿🧠 Cuales son las ventajas de usar Stacks?

  • Despliegue reproducible y declarativo.
  • Gestión simplificada de múltiples contenedores.
  • Actualización y rollback centralizado.
  • Versionado de infraestructura como código (IaC).
  • Escalabilidad en entornos Swarm.

 

4.2. Containers

Los contenedores son instancias en ejecución de una imagen Docker. Representa una unidad mínima, aislada y portable de software que empaqueta código, dependencias, librerías y configuraciones necesarias para ejecutar una aplicación o servicio específico.

 

⚙️ Características técnicas de un contenedor:

  • Aislado del sistema host mediante namespaces de Linux.
  • Ligero, ya que comparte el kernel del sistema operativo, a diferencia de las máquinas virtuales.
  • Reproducible, gracias a que deriva de una imagen inmutable.
  • Efímero, por defecto no persiste datos (a menos que se configuren volúmenes).
  • Gestionable, vía comandos docker, API REST o herramientas visuales como Portainer.

 

🛠️ Acciones que puedes hacer desde Portainer

  • Start / Stop / Restart: controlar el ciclo de vida.
  • Duplicate/Edit: crear uno nuevo basado en la configuración actual.
  • Console: acceso a shell interno del contenedor (sh, bash, etc.).
  • Inspect: ver todos los metadatos y configuraciones del contenedor.
  • Logs: visualizar eventos de ejecución y errores.
  • Stats: monitorizar uso de recursos en tiempo real.
  • Remove: eliminar el contenedor (sin afectar a la imagen ni los volúmenes, a menos que se especifique).

 

📌 Consideraciones técnicas avanzadas

  • Entrypoint y CMD: determinan el proceso principal que se ejecuta dentro del contenedor.
  • Healthcheck: comandos periódicos para determinar si el contenedor está "sano".
  • Restart Policy: define si el contenedor debe reiniciarse ante fallos (no, always, on-failure, unless-stopped).
  • Environment Variables: parámetros de configuración inyectados dinámicamente.
  • Bind mounts vs. Volumes: formas de persistencia o acceso a datos desde el host.

 

🧠 ¿Por qué son tan importantes los contenedores?

  • Permiten empaquetar y desplegar software de forma consistente entre entornos (dev, test, prod).
  • Aportan escalabilidad horizontal (con Swarm o Kubernetes).
  • Facilitan la automatización del despliegue mediante CI/CD.
  • Separan responsabilidades: cada contenedor hace una cosa (por ejemplo: nginx, php-fpm, mysql...).

 

4.3. Images

Las images (imágenes) son plantillas inmutables que contienen todo lo necesario para ejecutar una aplicación: binarios, bibliotecas, configuraciones, dependencias y código fuente. En Portainer, las images son gestionadas como artefactos base a partir de los cuales se pueden crear uno o varios contenedores.

 

⚙️ Características técnicas de una imagen

  • Inmutable: una vez creada, no cambia.
  • Versionada: cada imagen puede tener múltiples tags (nginx:1.25, mysql:8.0.32, etc.).
  • Multicapa: construida en capas (layers) reutilizables mediante caché.
  • Portátil: puede transferirse entre hosts, entornos o nubes.
  • Basada en capas: una imagen hereda de otra (por ejemplo: una app en python:3.11-alpine hereda el entorno base de Python sobre Alpine Linux).

 

📦 Flujo de uso típico

  • Pull: se descarga una imagen desde un registry (Docker Hub, GitLab Registry, Nexus, etc.).
  • Run: se instancia en uno o más contenedores.
  • Commit (opcional): se puede guardar una imagen nueva desde un contenedor modificado.
  • Push: se sube la imagen a un registro para su reutilización en otros entornos.

 

🧠 Consideraciones clave

  • No puedes eliminar una imagen si hay contenedores activos basados en ella.
  • Las imágenes consumen almacenamiento, incluso si no están en uso.
  • Evita el uso de latest en producción, ya que no es determinista.

 

4.4. Volumes

Un volumen Docker es una unidad de almacenamiento persistente que se monta en uno o más contenedores para conservar datos más allá del ciclo de vida de estos. En Portainer, los volúmenes son recursos administrables que permiten desacoplar los datos del contenedor, facilitando la persistencia, migración y mantenimiento de datos entre instancias o entornos.

 

🧬 Características técnicas

  • Persistencia de datos entre reinicios, paradas o recreaciones del contenedor.
  • Montaje dinámico en tiempo de ejecución a través de rutas específicas (mount point).
  • Aislado del host, aunque también se puede compartir entre contenedores.
  • Gestionado por Docker, sin necesidad de configurar permisos o rutas manualmente.
  • Compatible con múltiples drivers (local, nfs, azurefile, cifs, etc.).

 

🧠 Ventajas de usar volúmenes

  • Separación entre datos y lógica de aplicación.
  • Facilitan backups, migraciones y restauraciones.
  • Permiten compartir datos entre varios contenedores (por ejemplo: un volumen shared-logs entre nginx y app).
  • Seguros ante errores o eliminación accidental del contenedor.

 

📌 Buenas prácticas

  • Usa nombres significativos: db-data, nginx-conf, app-uploads.
  • Evita montar volúmenes críticos como bind mounts en producción.
  • Usa volúmenes separados por función (configuraciones, datos, logs).
  • Realiza copias de seguridad periódicas del directorio de volúmenes del host o usa plugins de backup.

 

4.5. Networks

Una network (red) en Docker (y gestionada visualmente desde Portainer) es un recurso lógico que define cómo se comunican entre sí los contenedores, el host y servicios externos. Las redes permiten controlar el aislamiento, la accesibilidad y la topología de comunicación entre contenedores de forma flexible y segura.

 

📡 Tipos de redes en Docker
Docker crea varios tipos de redes, y Portainer te permite visualizarlas, crear nuevas y asociarlas a contenedores o stacks. Los principales tipos son:

  • bridge (por defecto): Red local aislada para contenedores en un solo host. Usada en modo standalone.
  • host: El contenedor comparte el stack de red del host (sin aislamiento). Alta performance.
  • none: Sin red. El contenedor está completamente aislado.
  • overlay: Red distribuida entre nodos del clúster Swarm. Útil para stacks en múltiples hosts.
  • macvlan: Asigna una dirección MAC y IP del host al contenedor. Permite que parezca un dispositivo físico en la red local.
  • custom bridge: Redes bridge definidas por el usuario. Soportan DNS interno, alias y aislam

 

🧠 Ventajas de usar redes Docker personalizadas

  • Aislamiento lógico entre contenedores o aplicaciones.
  • DNS interno: los contenedores pueden resolverse por nombre dentro de la red.
  • Seguridad: minimiza exposición de puertos entre servicios.
  • Escalabilidad: redes overlay permiten comunicación entre múltiples nodos Swarm.

 

⚠️ Buenas prácticas

  • Usa redes separadas por dominio de servicio: frontend, backend, db, proxy, etc.
  • No expongas contenedores sensibles (como bases de datos) a redes públicas innecesarias.
  • Usa redes bridge personalizadas para que los contenedores puedan resolverse por nombre.
  • En producción, evita redes host salvo que se justifique su uso.