En este tema exploraremos el rico ecosistema de herramientas y plugins de terceros que rodea a Docker. Docker no vive aislado: a su alrededor ha crecido una enorme comunidad que ha creado registros alternativos, interfaces gráficas, escáneres de seguridad, constructores de imágenes alternativos y hasta motores de ejecución distintos. Conocer estas herramientas te permitirá elegir las más adecuadas para cada situación, mejorar tu flujo de trabajo y, en muchos casos, reforzar la seguridad de tus despliegues.
Objetivos de Aprendizaje
- Conocer registros alternativos como Harbor y el registry de Docker.
- Descubrir herramientas de interfaz como Portainer y Lazydocker.
- Aprender sobre herramientas de seguridad como Trivy y Docker Scout.
- Entender constructores alternativos como Buildah y Kaniko.
- Conocer runtimes alternativos como containerd y Podman.
Registros Alternativos
Un registro (registry) es un almacén donde se guardan y distribuyen imágenes de contenedor. El más conocido es Docker Hub, pero existen alternativas que puedes alojar tú mismo, lo que se conoce como un registro privado o autoalojado.
Docker Registry
Docker ofrece una imagen oficial llamada registry que te permite montar tu propio registro en segundos:
Desglose:
-d: ejecuta el contenedor en segundo plano.-p 5000:5000: expone el puerto 5000, que es el estándar para este registro.--name mi-registro: asigna un nombre legible al contenedor.registry:2: usa la versión 2 de la imagen oficial del registro.
Con esto tendrías un registro local donde subir y descargar imágenes. Por ejemplo, para subir una imagen:
Aquí primero etiquetamos (docker tag) la imagen apuntando a nuestro registro local y luego la subimos (docker push).
Harbor
Harbor es un registro de nivel empresarial mucho más completo. Además de almacenar imágenes, añade funcionalidades como:
- Control de acceso por roles: distintos permisos para distintos usuarios.
- Análisis de vulnerabilidades integrado.
- Firma de imágenes para garantizar su autenticidad.
- Replicación entre varios registros.
Harbor es una buena opción cuando una organización necesita un registro privado, seguro y con gobernanza, en lugar de depender de un registro público.
Herramientas de Interfaz (UI)
Aunque Docker se maneja muy bien por línea de comandos, a veces resulta cómodo tener una interfaz visual para ver de un vistazo qué está pasando.
Portainer
Portainer es una interfaz web para gestionar entornos Docker (y también Kubernetes). Se ejecuta como un contenedor más:
docker run -d -p 9000:9000 \
--name portainer \
-v /var/run/docker.sock:/var/run/docker.sock \
portainer/portainer-ce:latestDesglose:
-p 9000:9000: expone la interfaz web en el puerto 9000.-v /var/run/docker.sock:/var/run/docker.sock: monta el socket de Docker para que Portainer pueda comunicarse con el motor y gestionarlo.portainer/portainer-ce:latest: usa la edición comunitaria (Community Edition), gratuita.
Tras ejecutarlo, accederías a http://localhost:9000 para gestionar contenedores, imágenes, redes y volúmenes desde el navegador.
Lazydocker
Lazydocker es una interfaz de terminal (TUI) muy ligera que muestra el estado de tus contenedores, sus logs y su consumo de recursos en una sola pantalla. Es ideal para quienes prefieren no salir de la terminal pero quieren más comodidad que los comandos sueltos. Se lanza simplemente ejecutando:
Y navegas por sus paneles con el teclado, sin necesidad de recordar comandos.
Herramientas de Seguridad
La seguridad de las imágenes es fundamental: una imagen puede contener software con vulnerabilidades conocidas. Por eso existen escáneres que las analizan.
Trivy
Trivy es un escáner de seguridad muy popular, sencillo de usar y de código abierto. Analiza una imagen en busca de vulnerabilidades conocidas:
Este comando examina la imagen mi-app:latest y muestra un informe con las vulnerabilidades encontradas, clasificadas por gravedad (baja, media, alta, crítica). Es una excelente práctica integrarlo en el proceso de construcción para detectar problemas antes de desplegar.
Docker Scout
Docker Scout es la solución de análisis de seguridad propia de Docker, integrada en el ecosistema oficial. Permite analizar imágenes y obtener recomendaciones:
Este comando muestra las CVE (vulnerabilidades y exposiciones conocidas) presentes en la imagen. Docker Scout también ofrece sugerencias para corregirlas, por ejemplo recomendando una imagen base más actualizada.
Constructores de Imágenes Alternativos
Construir imágenes no siempre se hace con docker build. En algunos entornos, especialmente dentro de clústeres o pipelines automatizados, conviene construir imágenes sin necesitar un demonio Docker en ejecución.
Buildah
Buildah permite construir imágenes compatibles con el estándar OCI sin un demonio de Docker. Es muy flexible y se integra bien en entornos Linux. Un ejemplo de construcción a partir de un Dockerfile:
El subcomando bud significa build using Dockerfile (construir usando un Dockerfile), y -t asigna la etiqueta a la imagen resultante.
Kaniko
Kaniko está pensado para construir imágenes dentro de un clúster de Kubernetes o en pipelines de CI/CD, donde no es seguro ni práctico tener acceso al demonio de Docker. Construye la imagen en un contenedor aislado y la sube directamente a un registro. Es muy habitual en flujos de integración continua.
Runtimes Alternativos
El runtime es el componente que realmente ejecuta los contenedores. Docker usa uno por debajo, pero existen alternativas.
containerd
containerd es un runtime de contenedores que, de hecho, Docker utiliza internamente. Es un proyecto independiente, ligero y estándar en la industria. Muchas plataformas, incluido Kubernetes, lo usan directamente sin necesidad de todo el resto de Docker. Lo veremos con más detalle en la próxima lección.
Podman
Podman es una alternativa a Docker muy interesante por dos motivos:
- No necesita un demonio en segundo plano (es daemonless).
- Puede ejecutar contenedores sin privilegios de root (rootless), lo que mejora la seguridad.
Lo más práctico es que su interfaz de comandos es casi idéntica a la de Docker. Por ejemplo:
Como ves, el comando es prácticamente igual al de Docker. Esto facilita mucho la migración para quienes ya conocen Docker.
Tabla Resumen por Categoría
| Categoría | Herramientas | Para qué sirve |
|---|---|---|
| Registros alternativos | Docker Registry, Harbor | Almacenar y distribuir imágenes de forma privada. |
| Interfaces (UI) | Portainer, Lazydocker | Gestionar Docker de forma visual. |
| Seguridad | Trivy, Docker Scout | Detectar vulnerabilidades en las imágenes. |
| Construcción | Buildah, Kaniko | Construir imágenes sin demonio Docker. |
| Runtimes | containerd, Podman | Ejecutar contenedores con distintos enfoques. |
Errores Comunes y Consejos
- Confiar ciegamente en cualquier imagen pública: descarga imágenes de fuentes fiables y escanéalas con Trivy o Docker Scout antes de usarlas.
- Montar el socket de Docker sin pensar: herramientas como Portainer necesitan acceder a
/var/run/docker.sock, pero ese acceso es muy potente. Concédelo solo a herramientas de confianza. - Pensar que solo existe Docker: el ecosistema es amplio. Podman o Buildah pueden encajar mejor en ciertos entornos, especialmente cuando la seguridad sin root es prioritaria.
- No escanear las imágenes en producción: integra el análisis de seguridad en tu pipeline para detectar vulnerabilidades de forma automática y temprana.
- Consejo: empieza por una o dos herramientas que resuelvan un problema real que tengas. No intentes adoptarlas todas a la vez.
Ejercicios
Ejercicio 1
Clasifica cada una de estas herramientas en su categoría correcta (registro, interfaz, seguridad, construcción o runtime):
- Trivy
- Portainer
- Harbor
- Kaniko
- Podman
Ejercicio 2
Explica qué hace el siguiente comando y por qué es necesario el parámetro del volumen:
docker run -d -p 9000:9000 --name portainer \
-v /var/run/docker.sock:/var/run/docker.sock \
portainer/portainer-ce:latestEjercicio 3
Una empresa quiere construir imágenes de contenedor dentro de su clúster de Kubernetes, donde no es seguro tener acceso al demonio de Docker. ¿Qué herramienta de las vistas recomendarías y por qué?
Soluciones
Solución al Ejercicio 1
- Trivy -> Seguridad.
- Portainer -> Interfaz (UI).
- Harbor -> Registro alternativo.
- Kaniko -> Construcción.
- Podman -> Runtime (alternativa a Docker).
Solución al Ejercicio 2
El comando ejecuta Portainer en segundo plano, exponiendo su interfaz web en el puerto 9000. El parámetro -v /var/run/docker.sock:/var/run/docker.sock monta el socket del demonio de Docker dentro del contenedor; es necesario porque Portainer debe comunicarse con el motor de Docker del host para poder gestionar contenedores, imágenes, redes y volúmenes.
Solución al Ejercicio 3
Recomendaría Kaniko, porque está diseñado específicamente para construir imágenes dentro de clústeres de Kubernetes y pipelines de CI/CD sin necesidad de acceder al demonio de Docker, lo que lo hace más seguro en ese tipo de entornos.
Conclusión
En esta lección hemos recorrido el amplio ecosistema de herramientas y plugins de terceros que complementan a Docker: registros alternativos como Harbor, interfaces como Portainer y Lazydocker, escáneres de seguridad como Trivy y Docker Scout, constructores como Buildah y Kaniko, y runtimes alternativos como containerd y Podman. Conocer estas opciones te da la libertad de elegir la herramienta adecuada para cada necesidad y de reforzar la seguridad de tus despliegues. En la última lección del curso miraremos hacia adelante para descubrir el Futuro de Docker y las tendencias que están dando forma al mundo de los contenedores.
Docker: De Principiante a Avanzado
Módulo 1: Introducción a Docker
- ¿Qué es Docker?
- Instalando Docker
- Arquitectura de Docker
- Comandos Básicos de Docker
- Entendiendo las Imágenes de Docker
- Creando tu Primer Contenedor Docker
Módulo 2: Trabajando con Imágenes Docker
- Docker Hub y Repositorios
- Construyendo Imágenes Docker
- Conceptos Básicos de Dockerfile
- Gestionando Imágenes Docker
- Etiquetado y Publicación de Imágenes
Módulo 3: Contenedores Docker
- Ejecutando Contenedores
- Ciclo de Vida del Contenedor
- Gestionando Contenedores
- Redes en Docker
- Persistencia de Datos con Volúmenes
Módulo 4: Docker Compose
- Introducción a Docker Compose
- Definiendo Servicios en Docker Compose
- Comandos de Docker Compose
- Aplicaciones Multi-Contenedor
- Variables de Entorno en Docker Compose
Módulo 5: Conceptos Avanzados de Docker
- Profundización en Redes Docker
- Opciones de Almacenamiento Docker
- Mejores Prácticas de Seguridad en Docker
- Optimizando Imágenes Docker
- Registro y Monitoreo en Docker
Módulo 6: Docker en Producción
- CI/CD con Docker
- Orquestando Contenedores con Docker Swarm
- Introducción a Kubernetes
- Desplegando Contenedores Docker en Kubernetes
- Escalado y Balanceo de Carga
