Cómo crear un registro de Docker autoalojado con certificados autofirmados
Cuando necesitas un registro de Docker alojado en tu red local y no quieres pasar por el problema de comprar certificados de una Autoridad de Certificación, ¿qué haces? Despliegas un registro utilizando certificados autofirmados.
Aunque este proceso es un poco más complicado, no es tan desafiante que cualquier administrador de IT no pueda llevarlo a cabo.
Y voy a mostrarte cómo hacerlo.
Lo que necesitarás
Para que esto funcione, necesitarás al menos dos máquinas, ambas con Docker instalado. Voy a demostrarlo en Ubuntu Server 20.04 y Pop!_OS desktop. Si estás utilizando un sistema operativo diferente, deberás adaptar el proceso en consecuencia.
Cómo crear tus directorios
Lo primero que vamos a hacer es crear algunos directorios para alojar el repositorio y los certificados necesarios. Voy a hacer esto en el directorio de inicio de los usuarios, pero puedes colocarlos en cualquier directorio al que tu usuario tenga acceso.
Crea el directorio base con:
Cómo funciona el protocolo FTP y cómo resolver problemas relacionados con élmkdir ~/registro
Crea los dos subdirectorios con:
mkdir ~/registro/certs
mkdir ~/registro/auth
Cambia al directorio de certs con:
cd ~/registro/certs
Genera una clave privada con:
openssl genrsa 1024 > domain.key
Cambia los permisos de la nueva clave con:
chmod 400 domain.key
A continuación, necesitamos generar nuestro certificado. Sin embargo, debido a la forma en que ahora funciona el proceso de autorización, primero debemos crear un archivo san.cnf con:
nano san.cnf
En ese archivo, pega el siguiente contenido (asegúrate de editarlo según corresponda):
[req]
default_bits = 2048
distinguished_name = req_distinguished_name
req_extensions = req_ext
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
countryName = XX
stateOrProvinceName = N/A
localityName = N/A
organizationName = Certificado autofirmado
commonName = 120.0.0.1: Certificado autofirmado
[req_ext]
subjectAltName = @alt_names
[v3_req]
subjectAltName = @alt_names
[alt_names]
IP.1 = 192.168.1.191
Asegúrate de cambiar (al menos) IP.1 = para que coincida con la dirección IP de tu servidor de alojamiento.
Guarda y cierra el archivo.
Genera la clave con:
openssl req -new -x509 -nodes -sha1 -days 365 -key domain.key -out domain.crt -config san.cnf
Cambia al directorio auth con:
cd ../auth
Ahora debemos descargar el contenedor del registro y hacer que genere un archivo htpasswd. Esto se hace con el comando:
docker run --rm --entrypoint htpasswd registry:2.7.0 -Bbn NOMBREDEUSUARIO CONTRASEÑA > htpasswd
Donde NOMBREDEUSUARIO es un nombre de usuario único y CONTRASEÑA es una contraseña única/fuerte.
Cómo desplegar el servidor de registro
Ahora es el momento de desplegar el servidor de registro. Cambia de nuevo al directorio base del registro con:
La importancia de la automatización en la gestión de servidores en la nubecd ~/registro
Despliega el contenedor del registro con el siguiente comando:
docker run -d \
--restart=always \
--name registry \
-v `pwd`/auth:/auth \
-v `pwd`/certs:/certs \
-v `pwd`/certs:/certs \
-e REGISTRY_AUTH=htpasswd \
-e REGISTRY_AUTH_HTPASSWD_REALM="Registro Realm" \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
-e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
-p 443:443 \
registry:2.7.0
Ahora debería estar ejecutándose tu registro y accesible desde la máquina local. Sin embargo, si deseas acceder a él desde un sistema remoto, debemos agregar un archivo ca.crt. Necesitarás copiar el contenido del archivo ~/registro/certs/domain.crt.
Inicia sesión en tu segunda máquina y crea un nuevo directorio con:
sudo mkdir -p /etc/docker/certs.d/SERVIDOR:443
Donde SERVIDOR es la dirección IP de la máquina que aloja el registro.
Crea el nuevo archivo con:
sudo nano /etc/docker/certs.d/SERVIDOR:443/ca.crt
Donde SERVIDOR es la dirección IP de la máquina que aloja el registro.
Pega el contenido del archivo domain.crt (del servidor de alojamiento) en este nuevo archivo. Guarda y cierra el archivo.
Cómo iniciar sesión en el nuevo registro
Desde la segunda máquina, abre una ventana de terminal e inicia sesión en tu nuevo registro de Docker con el siguiente comando:
docker login -u USUARIO -p https://SERVIDOR:443
Donde USUARIO es el usuario que agregaste cuando generaste el archivo htpasswd y SERVIDOR es la dirección IP de la máquina que aloja el registro.
Deberías recibir una solicitud de contraseña. Tras una autenticación exitosa, verás "Login Succeeded" (Inicio de sesión correcto).
Felicidades, ahora puedes utilizar ese registro de Docker autohospedado para tus imágenes de contenedores.
Suscríbete al canal de YouTube de Newsmatic's How To Make Tech Work para obtener los últimos consejos tecnológicos para profesionales de negocios de Jack Wallen.
En Newsmatic nos especializamos en tecnología de vanguardia, contamos con los artículos mas novedosos sobre Nube, allí encontraras muchos artículos similares a Cómo crear un registro de Docker autoalojado con certificados autofirmados , tenemos lo ultimo en tecnología 2023.
Artículos Relacionados