GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo configurar y usar el registro privado de Docker

Introducción

Si desea garantizar un desarrollo de CI/CD fluido con la plataforma Docker, considere la posibilidad de configurar un registro privado de Docker. No solo acelera la entrega, sino que también es una forma práctica de distribuir recursos y compartir imágenes de Docker entre contenedores.

En este tutorial, aprenda a configurar un registro privado de Docker y configúrelo para accesibilidad externa.

Requisitos previos

  • Acceso a una cuenta de usuario con sudo o raíz privilegios
  • Un servidor cliente
  • Un servidor para Docker Registry privado
  • Docker y Docker–Compose en ambos servidores
  • Nginx en el servidor Docker Registry privado

¿Qué es un registro privado de Docker

Registro de Docker es una aplicación del lado del servidor y parte del producto de plataforma como servicio de Docker. Le permite almacenar localmente todas sus imágenes de Docker en una ubicación centralizada.

Cuando configura un registro privado, asigna un servidor para comunicarse con Docker Hub a través de Internet. La función del servidor es extraer y enviar imágenes, almacenarlas localmente y compartirlas entre otros hosts de Docker.

Al ejecutar un registro accesible desde el exterior, puede ahorrar recursos valiosos y acelerar los procesos. El software le permite extraer imágenes sin tener que conectarse a Docker Hub, ahorrando ancho de banda y protegiendo el sistema de posibles amenazas en línea.

Los hosts de Docker pueden acceder al repositorio local a través de una conexión segura y copiar imágenes del registro local para crear sus propios contenedores.

Antes de empezar

Como se indica en la sección de requisitos previos, la guía asume que ya tiene Docker y Docker-Compose instalados en todos los servidores.

Para verificar que tiene el software requerido, puede verificar sus versiones de lanzamiento con los comandos:

docker version
docker-compose version

Otra cosa que querrá asegurarse es que el servicio Docker se haya iniciado y esté configurado para habilitarse en el momento del arranque:

sudo systemctl start docker
sudo systemctl enable docker

Instalar y configurar el registro privado de Docker

Paso 1:crear directorios de registro

Comience a configurar el servidor que alojará el registro privado. Primero desea crear un nuevo directorio que almacenará todos los archivos de configuración necesarios.

1. El siguiente comando crea un nuevo directorio de proyecto con la etiqueta registry y dos subdirectorios - nginx y auth :

mkdir -p registry/{nginx, auth}

2. Mover a registry y crea dos nuevos directorios dentro de nginx :

cd registry/
mkdir -p nginx/{conf.d/,ssl}

3. Vea la jerarquía de los directorios recién creados escribiendo:

tree

Paso 2:Crear Docker-Compose Script y definir servicios

A continuación, debe crear y configurar un nuevo docker-compose.yml texto. El script define la versión de Docker-Compose, así como los servicios que necesita para configurar un registro privado.

1. Cree un nuevo archivo, mientras está en el registry directorio, con un editor de texto de su preferencia:

nano docker-compose.yml

2. Hay algunas cosas que debe definir en este archivo de configuración, así que siga de cerca y agregue cuidadosamente cada sección del contenido:

version: '3'
services:
#Registry
  registry:
    image: registry:2
    restart: always
    ports:
    - "5000:5000"
    environment:
      REGISTRY_AUTH: htpasswd
      REGISTRY_AUTH_HTPASSWD_REALM: Registry-Realm
      REGISTRY_AUTH_HTPASSWD_PATH: /auth/registry.passwd
      REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data
    volumes:
      - registrydata:/data
      - ./auth:/auth
    networks:
      - mynet
#Nginx Service
  nginx:
    image: nginx:alpine
    container_name: nginx
    restart: unless-stopped
    tty: true
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/conf.d/:/etc/nginx/conf.d/
      - ./nginx/ssl/:/etc/nginx/ssl/
    networks:
      - mynet
#Docker Networks
networks:
  mynet:
    driver: bridge
#Volumes
volumes:
  registrydata:
    driver: local

3. Guarde y cierre el archivo.

La configuración explicada:

En primer lugar, define la versión de Docker-Compose que desea utilizar. En este ejemplo, es version: '3' . Luego pasa a definir todos los componentes del registro de Docker, comenzando con #Registry servicio.

Docker Registry es esencialmente un contenedor que ejecuta la imagen de registro, por lo que la imagen se define como registry:2 .

Agregar el restart: always line garantiza que inicie Docker Registry como un servicio tan pronto como inicie el sistema.

Determinación de los puertos 5000:5000 indica a Docker que el host y el contenedor en ejecución se comunican a través de los números de puerto definidos.

El servicio montará el volumen acoplable registrydata y el directorio local auth , junto con su archivo de autenticación registry.passwd .

El siguiente elemento es el #Nginx Service . La configuración describe que el servicio se ejecuta en los puertos 80:80 (HTTPS) y 443:443 (HTTPS). Montará el directorio local para la configuración virtual (conf.d ) y certificados SSL (ssl ).

Finalmente, configura mynet con un controlador de puente y los registrydata con un controlador local como parámetros para la red personalizada.

Paso 3:configurar el reenvío de puertos Nginx

El siguiente paso es configurar un host virtual Nginx y configurarlo para el servicio Nginx.

1. Vaya a nginx/conf.d/ directorio que creó en el paso anterior:

cd nginx/conf.d/

2. Cree un nuevo archivo de host virtual llamado registry.conf :

nano registry.conf

3. Agregue el siguiente contenido:

upstream docker-registry {
    server registry:5000;
}

server {
    listen 80;
    server_name registry.example-server.com;
    return 301 https://registry.example-server.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name registry.example-server.com;

    ssl_certificate /etc/nginx/ssl/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/privkey.pem;

    # Log files for Debug
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;

    location / {
        # Do not allow connections from docker 1.5 and earlier
        # docker pre-1.6.0 did not properly set the user agent on ping, catch "Go *" user agents
        if ($http_user_agent ~ "^(docker\/1\.(3|4|5(?!\.[0-9]-dev))|Go ).*$" )  {
            return 404;
        }

        proxy_pass                          http://docker-registry;
        proxy_set_header  Host              $http_host;
        proxy_set_header  X-Real-IP         $remote_addr;
        proxy_set_header  X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header  X-Forwarded-Proto $scheme;
        proxy_read_timeout                  900;
    }

}

4. Guarde el archivo y regrese al terminal.

Paso 4:Aumente el tamaño de carga del archivo Nginx

De forma predeterminada, Nginx limita el tamaño de carga del archivo a 1 MB. . Dado que muchas imágenes de Docker superan este número, la mejor práctica es aumentar el tamaño máximo de archivo en Nginx. Asegúrese de que puede cargar imágenes que tengan un tamaño de archivo más grande configurando max_body_size a 2GB .

1. Cree un archivo de configuración adicional con:

nano additional.conf

2. Agregue la siguiente línea en el archivo:

client_max_body_size 2G;

3. Guarde y cierre el archivo.

Paso 5:configurar el certificado SSL y la autenticación básica

1. Los archivos de certificados SSL de su dominio deben copiarse en ssl directorio. Para ello, ejecute los comandos:

cp /path/to/ssl/fullchain.pem ssl/
cp /path/to/ssl/privkey.pem ssl/

2. Luego, vaya a auth directorio:

cd auth

3. Y solicite un nuevo archivo de contraseña llamado registry.passwd para su usuario:

htpasswd -Bc registry.passwd example

4. Escriba una contraseña segura y vuelva a escribirla para confirmar. Con esto, ha agregado una contraseña para su usuario.

Paso 6:agregue el certificado de CA raíz

Ahora debe agregar el certificado de CA raíz a Docker y al sistema en el que está trabajando.

1. Exporte el .crt archivo con OpenSSL escribiendo:

openssl x509 -in rootCA.pem -inform PEM -out rootCA.crt

2. Copie el certificado raíz en un nuevo directorio para certificados de Docker:

mkdir -p /etc/docker/certs.d/registry.example-server.com/
cp rootCA.crt /etc/docker/certs.d/example-server.com/

3. A continuación, copie el mismo certificado en otro directorio nuevo con el nombre /usr/share/ca-certificate/extra :

mkdir -p .usr.share.ca-certificates/extra/
cp rootCA.crt /usr/share/ca-certificates/extra/

4. Vuelva a configurar el ca-certificate recién creado paquete escribiendo:

dpkg-reconfigure ca-certificates

5. Finalmente, reinicie el servicio Docker:

systemctl restart docker

Paso 7:Ejecute el registro de Docker

Con todo configurado y listo, puede crear el contenedor Docker Registry utilizando Docker-Compose:

docker-compose up -d

Compruebe si el Registro y los servicios de Nginx se están ejecutando:

docker-compose ps
netstat -plntu

La salida debería mostrarle los servicios y sus puertos asignados.

Extraer imagen de Docker Hub a un registro privado

1. Para almacenar localmente una imagen de Docker Hub en su registro privado, utilice docker pull comando:

docker pull [docker_image]

2. Agregue una etiqueta a la imagen para etiquetarla para el registro privado:

docker image tag [docker_image] registry.example-server.com/[new_image_name]

3. Puede verificar si la imagen de Docker está disponible localmente solicitando al sistema que enumere todas las imágenes almacenadas localmente:

docker images

Cómo enviar una imagen de Docker a un registro privado

1. Para enviar una imagen desde un host de Docker al servidor de registro privado de Docker, primero debe iniciar sesión en el registro con el comando:

docker login https://registry.example-server.com/v2/

2. Escriba el nombre de usuario y contraseña que definió para el host virtual.

3. Ahora puede enviar su imagen al registro privado con el comando:

docker push registry.example-server.com/[new_image_name]

4. Vea una lista de imágenes almacenadas en el registro privado de Docker:

http -a example https://registry.example-server.com/v2/_catalog

Ubuntu
  1. Cómo establecer el límite de uso de CPU y memoria de Docker

  2. Volúmenes NFS Docker:Cómo crear y usar

  3. Cómo instalar y usar Docker en Ubuntu 20.04

  4. Cómo configurar un registro privado de Docker en Rocky Linux 8

  5. Cómo instalar y usar Docker en Ubuntu 20.04

Cómo configurar el registro privado de Docker en Ubuntu 20.04

Cómo instalar y configurar Docker en Ubuntu 18.04

Cómo configurar el registro privado de Docker en Ubuntu 18.04 LTS

Cómo instalar y usar Docker Compose en Ubuntu 20.04

Cómo instalar y usar Docker en Ubuntu 22.04

Cómo instalar y usar Docker en AlmaLinux 8