Docker
Docker registro privado / seguro con API v2
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
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 :
- Obtenga una imagen oficial de hub.docker.com:
docker pull nginx
- 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
(usadocker images
para obtener el IMAGE_ID) - Empuje la imagen al registro:
docker push mydomain.com:5000/nginx