Qué es un registro Docker privado

Un registro es el servidor que guarda las imágenes de contenedor y las sirve cuando alguien ejecuta docker pull. Docker Hub es el registro público por defecto, pero en cuanto necesitas controlar dónde viven tus imágenes (por cumplimiento normativo, por ancho de banda o simplemente para no depender de un tercero) montas el tuyo con la implementación de referencia del proyecto Distribution, empaquetada en la imagen registry:3.

Cómo se etiqueta y se sube una imagen

El nombre de una imagen lleva el registro codificado delante: host:puerto/repositorio:etiqueta. docker tag alpine:3.21 localhost:5000/alpine:mine no copia nada, solo crea un alias local que apunta al mismo ID de imagen; es docker push el que envía las capas al registro. Puedes repasar la sintaxis exacta en la referencia oficial de docker tag.

Asegurar el registro con htpasswd y TLS

Un registro sin autenticación es un cubo abierto: cualquiera con red hasta el puerto 5000 puede subir o descargar imágenes. La imagen registry:3 admite autenticación básica (usuario y contraseña con hash bcrypt, vía htpasswd) y TLS delante del puerto 5000; en producción van siempre juntas, porque Docker solo envía credenciales en claro a hosts marcados como «inseguros», que por defecto es únicamente localhost. En este laboratorio generamos el fichero htpasswd con un usuario y una contraseña de prueba (changeme) para ver el formato bcrypt que exige el registro; para activarlo de verdad solo falta añadir REGISTRY_AUTH=htpasswd, REGISTRY_AUTH_HTPASSWD_PATH y un certificado en REGISTRY_HTTP_TLS_CERTIFICATE al arrancar el contenedor.

Si vas a exponer el registro bajo tu propio dominio, nuestra guía de Nginx Proxy Manager con Docker resuelve la parte del certificado TLS delante de cualquier contenedor. Para entender el resto de la red que toca este laboratorio tenemos guías dedicadas sobre redes en Docker y sobre volúmenes y bind mounts; y si prefieres una guía escrita paso a paso sin vídeo, la versión larga está en cómo montar un registro privado de imágenes Docker. Este y el resto de nuestros laboratorios prácticos siguen la misma regla: todo lo que ves se ejecutó de verdad.

Preguntas frecuentes

¿Qué imagen oficial se usa para montar un registro Docker privado?

La imagen registry:3, mantenida por el proyecto Distribution (la implementación de referencia del registro de contenedores). Sustituye a la antigua registry:2, que sigue funcionando pero ya no recibe las últimas correcciones.

¿Cómo le indico a Docker que use mi registro en vez de Docker Hub?

Anteponiendo el host y el puerto del registro al nombre de la imagen: localhost:5000/alpine:mine en vez de alpine:mine. Ese prefijo es lo único que distingue una imagen de Docker Hub de una de tu propio registro.

¿Es seguro dejar un registro Docker sin autenticación ni TLS?

No para producción. Sin autenticación, cualquiera con red hasta el puerto 5000 puede subir o descargar imágenes; sin TLS, Docker solo envía credenciales en claro a hosts marcados como inseguros (por defecto, solo localhost). El registro admite ambos a la vez: htpasswd para autenticación y un certificado para cifrar el tráfico.

¿Qué diferencia hay entre docker tag y docker push?

docker tag no mueve ni un byte: crea un alias local nuevo que apunta al mismo ID de imagen. docker push es el que de verdad envía las capas de la imagen al registro de destino codificado en ese alias.