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.

Índice de Contenido
  1. Lo que necesitarás
  2. Cómo crear tus directorios
  3. Cómo desplegar el servidor de registro
  4. Cómo iniciar sesión en el nuevo registro

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 él

mkdir ~/registro

Crea los dos subdirectorios con:

mkdir ~/registro/certs

mkdir ~/registro/auth

Cambia al directorio de certs con:

cd ~/registro/certs

Microsoft lanza servicio gratuito de almacenamiento en la nube para usuarios de Windows

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

Cómo evitar que el archivo de registro de transacciones en SQL Server crezca demasiado grande

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

Debería su organización migrar a Google Apps desde Microsoft Exchange

prompt = no

[req_distinguished_name]

countryName = XX

stateOrProvinceName = N/A

localityName = N/A

organizationName = Certificado autofirmado

Google vs Microsoft: Quién ofrece el mejor almacenamiento en la nube

commonName = 120.0.0.1: Certificado autofirmado

[req_ext]

subjectAltName = @alt_names

[v3_req]

subjectAltName = @alt_names

[alt_names]

Cómo cambiar y administrar la cuenta de Administrador local en Windows mediante Group Policy

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

Cómo generar cadenas aleatorias únicas en una aplicación escalable

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 nube

cd ~/registro

Despliega el contenedor del registro con el siguiente comando:

docker run -d \

--restart=always \

--name registry \

-v `pwd`/auth:/auth \

Historia en eterno retorno: El cloud computing podría repetir los errores del auge de las PC en los años 80

-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 \

Cómo usar Insightster con Google Apps para gestionar ideas y mejorar la productividad

-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

Subir

Utilizamos cookies para mejorar su experiencia de navegación, mostrarle anuncios o contenidos personalizados y analizar nuestro tráfico. Al hacer clic en “Aceptar todo” usted da su consentimiento a nuestro uso de las cookies.