Resumen: compartir imágenes Docker con Docker Hub 🚀
Compartir tus contenedores más allá de tu máquina es la forma rápida de pasar del "me está funcionando en mi laptop" al mundo real: colaboración, despliegues y distribución.
Crear cuenta y autenticación 🔐
Resumen: necesitas una cuenta en Docker Hub y estar autenticado desde tu terminal o Docker Desktop para poder publicar imágenes.
Ejemplo (transcripción): el usuario usa la cuenta aminespinoza, ejecuta docker login en la terminal, introduce usuario y contraseña y verifica que Docker Desktop muestra aminespinoza.
Pasos clave
- Crear cuenta en Docker Hub (si aún no la tienes, sigue el recurso de tu curso).
- Autenticarse:
docker login (terminal) o desde Docker Desktop.
- Verificar: la interfaz (Docker Desktop) o el feedback en la terminal confirmará el login.
Recomendaciones
- Usa MFA si Docker Hub lo soporta.
- Gestiona credenciales con un manager (no copies contraseñas en texto plano).
- Si usas registries privados, configurar
docker login registry.example.com.
Construir y etiquetar la imagen correctamente 🏷️
Resumen: el etiquetado al construir determina a qué repositorio en Docker Hub apuntarás. Si vas a publicar, prefija la imagen con tu nombre de usuario: usuario/nombre:tag.
Ejemplo (transcripción):
docker build -t aminespinoza/linktree:latest .
El punto final (.) indica el contexto (el Dockerfile local).
Puntos importantes
- Sintaxis para publicar:
docker build -t usuario/imagen:tag .
- El prefijo
usuario/ vincula la imagen a tu repositorio en Docker Hub.
tag puede ser latest, v1.0.0, o sha-commit (más sobre eso en buenas prácticas).
Consejos
- No dependas únicamente de
latest en producción; versiona.
- Usa multi-stage builds para reducir tamaño.
- Incluye metadatos en la imagen (LABELs) para facilitar trazabilidad.
Verificar imágenes locales 🔍
Resumen: tras construir, comprueba que la etiqueta quedó bien antes de subir.
Ejemplo (transcripción): ejecutar docker images y ver aminespinoza/linktree latest.
Checklist
docker images para listar imágenes.
- Confirma el
REPOSITORY y el TAG.
- Si hay errores en el tag, reconstruye con la etiqueta correcta.
Publicar en Docker Hub con docker push ☁️
Resumen: subir la imagen es tan sencillo como docker push usuario/imagen:tag. Tiempo de subida depende de internet y tamaño.
Ejemplo (transcripción): luego de verificar la imagen, se usa docker push aminespinoza/linktree:latest. El proceso puede tardar segundos o minutos.
Detalles prácticos
- Requisito previo: estar autenticado con la cuenta correspondiente.
- Comando:
docker push usuario/imagen:tag
- Tiempo de subida afectado por:
- Ancho de banda de subida.
- Tamaño de la imagen (capas).
- Latencia y congestión del registry.
Recomendaciones
- Comprime y minimiza imágenes para acelerar pushes/pulls.
- Usa capas caché en CI para evitar subir/reescribir capas idénticas.
- Configura políticas de retención si usas registries privados.
Confirmación en Docker Hub y persistencia ✅
Resumen: refresca tu perfil en Docker Hub para verificar la publicación; la imagen queda disponible públicamente (o privada si así la configuras) y otros la podrán descargar.
Ejemplo (transcripción): al refrescar el perfil aparece link-three con la marca de “enviado hace unos segundos”.
Claves
- Docker Hub muestra fecha/hora del último push.
- La imagen permanecerá disponible a menos que la borres o cambies visibilidad.
- Los usuarios pueden hacer
docker pull usuario/imagen:tag para obtenerla.
Recomendación práctica
- Añade un README/descripcion en la página del repositorio para explicar propósito y cómo usarla (puede ahorrar horas de soporte).
Descargar y ejecutar desde otra máquina (docker run) ▶️
Resumen: otro usuario puede ejecutar la imagen remota con docker run usuario/imagen:tag. Si no está local, Docker la descarga automáticamente (pull) y luego la ejecuta.
Ejemplo (transcripción): “Juan” ejecuta docker run aminespinoza/linktree:latest — Docker detecta que no existe localmente y la descarga automáticamente.
Comportamiento y pasos
docker run repo:tag → si no existe local, realiza pull automáticamente.
- Los parámetros de
docker run (puertos, volúmenes, variables) no cambian por el origen de la imagen.
- Para exponer una web localmente normalmente necesitas mapear puertos: por ejemplo (hipotético),
docker run -d -p 8080:80 aminespinoza/linktree:latest y luego abrir http://localhost:8080/linktree.html.
Notas prácticas
- Si la imagen expone un servidor web, documenta qué puerto usa (
EXPOSE en Dockerfile ayuda, pero no sustituye la documentación).
- Ejecuta en modo desatendido
-d para que el contenedor corra en background cuando corresponda.
Documentación: la URL y la experiencia del usuario 📝
Resumen: una imagen pública sin instrucciones es una caja negra; explica claramente cómo generar la URL, qué puertos exponer y qué rutas usar.
Ejemplo (transcripción): la persona abre localhost/linktree.html en su navegador, pero advierte que el usuario que descarga la imagen no tiene forma de saber la URL si no está documentado.
Qué documentar en Docker Hub / README
- Comando(s) de ejemplo para ejecutar la imagen (con
-p si hace falta).
- Puertos expuestos y rutas útiles (ej.:
/link-three.html).
- Variables de entorno necesarias.
- Volúmenes sugeridos para persistencia.
- Cómo comprobar logs y healthchecks.
Consejo directo
- Incluye ejemplos concretos de
docker run en la descripción: eso evita conjeturas y tickets de soporte.
Inspección y depuración — logs y comportamiento runtime 🛠️
Resumen: la terminal es tu centro de diagnóstico. Los logs y el output del contenedor revelan rutas, puertos, mensajes de error y comportamiento de la app.
Ejemplo (transcripción): al interactuar con la página, la terminal muestra rutas, puertos y actividad útil.
Herramientas y checks
docker ps para ver contenedores en ejecución y puertos mapeados.
docker logs container para ver la salida de la aplicación.
docker inspect container para metadatos más técnicos.
- Revisar la consola del navegador y logs de la app para entender el runtime.
Puntos rápidos
- Si la app no responde en
localhost, revisa mapeo de puertos, firewall y variables de entorno.
- Si hay endpoints específicos (ej.
/linktree.html), documenta su ubicación y método de acceso.
Buenas prácticas DevOps para publicar imágenes (nivel senior) ⚙️
Resumen: más allá del flujo básico, aplica prácticas que hacen tu imagen reutilizable, segura y fácil de operar.
Recomendaciones concretas
- Versionado semántico: evita depender solo de
latest; usa tags v1.2.3 o sha-commit.
- CI/CD automatizado: generar, testear y pushear imágenes desde pipelines (GitHub Actions, GitLab CI, etc.).
- Minimizar imagen: multi-stage builds, eliminar dependencias innecesarias, usar imágenes base oficiales y ligeras.
- Escaneo y firma: integra escáneres de vulnerabilidades y firma de imágenes para seguridad.
- No incluir secretos: nunca bakees credenciales en la imagen; usa variables de entorno o secretos del runtime.
- Documentación viva: README con comandos reproducibles, ejemplos y notas de configuración.
- Etiquetas reproducibles: añade LABELs con versión, mantenedor y fuente (repo/git sha).
Ejemplo hipotético de flujo CI
- Pipeline:
build → test → docker build -t org/proj:sha123 → docker push org/proj:sha123 → tag → docker push org/proj:latest (todo automatizado).
Resumen final y recomendaciones prácticas 🔚
Síntesis rápida
- Crear cuenta y autenticarse:
docker login o Docker Desktop.
- Construir con etiqueta:
docker build -t usuario/imagen:tag . (prefija con tu usuario para publicar).
- Verificar:
docker images.
- Subir:
docker push usuario/imagen:tag (tiempo = tamaño + ancho de banda).
- Descargar y correr:
docker run usuario/imagen:tag → Docker hará pull si no está local.
- Documenta TODO: puertos, rutas, variables y ejemplos de
docker run.
Recomendaciones prácticas (acción inmediata)
- Antes de pushear: añade un README claro con ejemplos
docker run y el puerto a usar.
- Versiona correctamente (no abuses de
latest).
- Automatiza builds/pushes desde tu CI.
- Optimiza la imagen para reducir tiempo de transporte (multi-stage).
- Nunca subas secretos ni credenciales embebidas.