Docker Hub es el registro público principal de imágenes Docker. Es decir, un servicio donde podemos buscar, descargar, publicar y compartir imágenes de contenedores.
Hasta ahora hemos usado imágenes como nginx, mysql, ubuntu o node casi como si aparecieran por arte de comandos. Pero esas imágenes no salen de la nada. Normalmente Docker las descarga desde Docker Hub, que es el registro configurado por defecto.
Docker Hub no es el único registro que existe. También hay alternativas como GitHub Container Registry, GitLab Container Registry, Amazon ECR, Azure Container Registry o Google Artifact Registry.
Pero Docker Hub sigue siendo el punto de partida más habitual, sobre todo cuando estamos aprendiendo.
Pensad en Docker Hub como una especie de “repositorio de paquetes”, pero para imágenes de contenedor. Igual que en programación usamos NuGet, npm, PyPI o Maven Central, en Docker usamos un registro para distribuir imágenes ya construidas.
Qué es un registro de imágenes
Un registro de imágenes es un servidor que almacena imágenes Docker y permite descargarlas con docker pull o subirlas con docker push.
Cuando ejecutamos:
docker pull nginx
Docker busca la imagen nginx en el registro por defecto. Si no le decimos otra cosa, ese registro es Docker Hub.
Por eso podemos escribir comandos tan sencillos como:
docker run nginx
Y Docker, si no tiene la imagen en local, hace automáticamente algo parecido a:
docker pull nginx
docker run nginx
Es decir, primero descarga la imagen y después crea el contenedor a partir de ella.
Repositorios en Docker Hub
En Docker Hub, las imágenes se organizan en repositorios. Un repositorio agrupa las distintas versiones o variantes de una misma imagen.
Por ejemplo, nginx es un repositorio. mysql es otro. python es otro.
Cuando una imagen pertenece a un usuario u organización, normalmente se escribe así:
usuario/repositorio
Por ejemplo:
luisllamas/mi-api
Esto significa que el repositorio mi-api pertenece al usuario u organización luisllamas.
Buscar imágenes
La forma más cómoda de buscar imágenes es entrar en la web de Docker Hub y usar el buscador.
También se puede buscar desde la terminal con:
docker search mysql
Este comando muestra una lista de imágenes relacionadas con MySQL, junto con una descripción breve.
Descargar imágenes
Para descargar una imagen usamos docker pull:
docker pull nginx
Esto descarga la imagen a nuestro equipo. A partir de ese momento, Docker puede crear contenedores usando esa imagen sin volver a descargarla.
Publicar nuestras imágenes
Docker Hub no sirve solo para descargar imágenes de otros. También podemos subir nuestras propias imágenes.
El flujo básico es:
Crear una cuenta en Docker Hub.
Iniciar sesión desde la terminal.
docker login
Construir una imagen local.
docker build -t mi-app .
Ponerle un nombre que apunte a vuestro usuario o repositorio.
docker tag mi-app usuario-docker/mi-app:1.0
Subirla con docker push.
docker push usuario-docker/mi-app:1.0
A partir de ese momento, otra máquina podría descargarla con:
docker pull usuario-docker/mi-app:1.0
Antes de subir una imagen, revisad que no habéis metido dentro archivos sensibles: .env, claves privadas, certificados, tokens, carpetas .git, etc.
Una imagen publicada puede ser descargada y analizada capa por capa. No deis por hecho que algo queda oculto porque “no se ve” al arrancar el contenedor.
