Como Configurar un Registro Privado de Docker en Linux
PROMO DigitalOcean
Antes de comenzar, quería contarles que hay una promoción en DigitalOcean donde te dan un crédito de USD 100.00 durante 60 días para que puedas probar los servicios que este Proveedor Cloud ofrece. Lo único que tienes que hacer es suscribirte a DigitalOcean con el siguiente botón:
O a través del siguiente enlace: https://bit.ly/digitalocean-itsm
Introducción
Si estás ejecutando microservicios en Docker en tu propia infraestructura, puede que estés interesado en tener tu propio repositorio privado de imágenes Docker. Puede ser por razones de seguridad o para que tus despliegues on-premises sean más rápidos. En este articulo te enseñaré como configurar un registro privado de Docker en Linux.
Esta guía asume que ya tienes instalado Docker en el host. Si aún no lo haz hecho, te puedo referir a nuestro articulo: Como Instalar Docker en Linux
Vamos a utilizar Let’s Encrypt para generar los certificados para el Registro. Asumo también que ya tienes configurado el dominio y que permita la conexión con los puertos 80 (https) y 443 (https)
Generando los Certificados de Let’s Encrypt
El certificado vencerá cada 90 días y es gratuito renovarlo, sin embargo, certbot nos hará el trabajo de hacerlo por nosotros.
Instalamos la herramienta certbot que nos permitirá solicitar el certificado:
- Ubuntu 22.04, 20.04, 18.04
|
|
- Rocky Linux / Alma Linux / RHEL 8
|
|
Solicitamos el certificado: yes
|
|
Donde:
- DOMAIN: colocamos nuestro dominio.
- EMAIL: colocamos un email del contacto administrativo.
La salida esperada sería más o menos así:
|
|
Los certificados se almacenará en el directorio /etc/letsencrypt/live/
|
|
Donde:
- fullchain.pem ⇒ archivo resultante de la combinación de cert.pem y chain.pem.
- chain.pem ⇒ certificado intermediario.
- cert.pem ⇒ certificado SSL Server(incluye la clave pública)
- privkey.pem ⇒ la llave privada.
Configurando e Iniciando nuestro Registro
Podemos configurar nuestro registro con o sin SSL.
Creamos el directorio donde se va a almacenar las imágenes del registro:
|
|
Para ejecutar el Registro Local sin SSL:
|
|
Para ejecutar el Registro Local con SSL:
Creamos un directorio donde copiaremos los certificados SSL, en este caso en el directorio /certs
:
|
|
Creamos entonces el contenedor con el Registro, la cual descargará desde DockerHub en caso de no tenerla ya:
|
|
Validamos que el contenedor esté ejecutandose:
|
|
Para hacer push de imagenes al Registro:
|
|
Descargamos dos imágenes desde DockerHub para subirlas a nuestro repositorio local:
|
|
Etiquetamos ambas imágenes:
|
|
Subimos las imágenes:
|
|
Bajando las Imágenes desde el Registro Local
Hagamos una prueba desde otra máquina en la misma red del repositorio local:
|
|
Y si ejecutamos el comando docker images
deberíamos ver la imagen de Ubuntu descargada y con la dirección del Repositorio.
Iniciando Registro con Autenticación
Los Registros deben tener implementados mecanismos para que solo usuarios autorizados puedan acceder a el (a menos que ese registro sea público, que no es nuestro caso) La manera más simple de lograr esto es restringiendo el acceso con autenticación básica:
Crea un archivo con una sola linea (la contraseña) para el usuario dockadmin
, con la contraseña password
:
|
|
Eliminamos el contenedor:
|
|
Y ahora lo levantamos de nuevo con la autenticación:
|
|
Si intentamos descargar una imagen, lo mas probable es que nos muestre este mensaje de error:
|
|
Lo cual quiere decir que la autenticación está funcionando y por ende debemos iniciar sesión:
|
|
Por lo que ya seriamos capaces de bajar y de subir imágenes a nuestro Registro Privado.
Espero les haya gustado y nos vemos en la próxima! Happy Dockering 😄
Artículos sobre Docker
- Como Instalar Docker en Linux
- Como Instalar Portainer: El Mejor Gestor Gráfico de Docker en Linux
- Conceptos y Comandos Básicos en Docker
- Construyendo Imágenes Personalizadas en Docker con Dockerfile
- Desplegando Aplicaciones con Docker Compose
- Como Configurar un Registro Privado de Docker en Linux
- SupervisorD: Gestionando Procesos en Docker
- Buenas Prácticas al Escribir Dockerfiles
- Crear Imágenes Multi-Arquitectura en Docker con buildx
Apoya este Proyecto
Si te pareció útil este artículo y el proyecto en general, considera brindarme un café :)
Buy me a coffee