Buscar..


Introducción

Un registro de docker privado y seguro en lugar de un Docker Hub. Se requieren habilidades básicas de docker.

Parámetros

Mando Explicación
sudo docker run -p 5000: 5000 Inicie un contenedor de la ventana acoplable y enlace el puerto 5000 del contenedor al puerto 5000 de la máquina física.
- registro de nombres Nombre del contenedor (se utiliza para mejorar la legibilidad de "docker ps").
-v 'pwd' / certs: / certs Enlace CURRENT_DIR / certs de la máquina física en / certs del contenedor (como una "carpeta compartida").
-e REGISTRY_HTTP_TLS_CERTIFICATE = / certs / server.crt Especificamos que el registro debe usar el archivo /certs/server.crt para comenzar. (variable env)
-e REGISTRY_HTTP_TLS_KEY = / certs / server.key Lo mismo para la clave RSA (server.key).
-v / root / images: / var / lib / registry / Si desea guardar todas las imágenes de registro, debe hacer esto en la máquina física. Aquí guardamos todas las imágenes en / root / images en la máquina física. Si hace esto, puede detener y reiniciar el registro sin perder ninguna imagen.
registro: 2 Especificamos que nos gustaría extraer la imagen de registro desde el concentrador de la ventana acoplable (o localmente), y agregamos «2» porque queremos instalar la versión 2 del registro.

Observaciones

Cómo instalar un motor docker (llamado cliente en este tutorial)

Cómo generar un certificado autofirmado SSL

Generando certificados

Genere una clave privada RSA: openssl genrsa -des3 -out server.key 4096

Openssl debe solicitar una frase de contraseña en este paso. Tenga en cuenta que solo usaremos el certificado para la comunicación y la autenticación, sin contraseña. Simplemente use 123456 por ejemplo.

Genere la solicitud de firma de certificado: openssl req -new -key server.key -out server.csr

Este paso es importante porque se le pedirá información sobre los certificados. La información más importante es "Nombre común", que es el nombre de dominio, que se utiliza para la comunicación entre el registro de docker privado y el resto de la máquina. Ejemplo: mydomain.com

Elimine la frase de acceso de la clave privada RSA: cp server.key server.key.org && openssl rsa -in server.key.org -out server.key

Como he dicho, nos centraremos en el certificado sin contraseña. Así que tenga cuidado con todos los archivos de su clave (.key, .csr, .crt) y manténgalos en un lugar seguro.

Genere el certificado autofirmado: openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Ahora tiene dos archivos esenciales, server.key y server.crt , que son necesarios para la autenticación del registro privado.

Ejecutar el registro con certificado autofirmado.

Para ejecutar el registro privado (de forma segura) tiene que generar un certificado autofirmado, puede consultar el ejemplo anterior para generarlo.

Para mi ejemplo, puse server.key y server.crt en / root / certs

Antes de ejecutar el comando docker, debe colocarse (use cd ) en el directorio que contiene la carpeta certs . Si no lo eres e intentas ejecutar el comando, recibirás un error como

level = fatal msg = "abrir /certs/server.crt: no existe tal archivo o directorio"

Cuando esté ( cd /root en mi ejemplo), básicamente puede iniciar el registro seguro / privado usando: sudo docker run -p 5000:5000 --restart=always --name registry -v `pwd`/certs:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/server.crt -e REGISTRY_HTTP_TLS_KEY=/certs/server.key -v /root/Documents:/var/lib/registry/ registry:2
Las explicaciones sobre el comando están disponibles en la parte Parámetros.

Tire o empuje de un cliente docker

Cuando se ejecuta un registro operativo, puede extraer o insertar imágenes en él. Para eso necesita el archivo server.crt en una carpeta especial en su cliente docker. El certificado le permite autenticarse con el registro y luego cifrar la comunicación.

Copie server.crt de la máquina de registro en /etc/docker/certs.d/mydomain.com:5000/ en su máquina cliente. Y luego mv /etc/docker/certs.d/mydomain.com:5000/server.crt /etc/docker/certs.d/mydomain.com:5000/ca-certificates.crt a ca-certificados.crt : mv /etc/docker/certs.d/mydomain.com:5000/server.crt /etc/docker/certs.d/mydomain.com:5000/ca-certificates.crt

En este punto, puede extraer o insertar imágenes de su registro privado:
PULL: docker pull mydomain.com:5000/nginx o
EMPUJAR :

  1. Obtenga una imagen oficial de hub.docker.com: docker pull nginx
  2. Etiqueta esta imagen antes de docker tag IMAGE_ID mydomain.com:5000/nginx en el registro privado: docker tag IMAGE_ID mydomain.com:5000/nginx (usa docker images para obtener el IMAGE_ID)
  3. Empuje la imagen al registro: docker push mydomain.com:5000/nginx


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow