GNU/Linux >> Tutoriales Linux >  >> Cent OS

Cómo configurar el registro privado de Docker en CentOS 7 / Ubuntu 16.04 / Fedora 26/25

El registro de Docker es una aplicación que le permite almacenar y distribuir las imágenes de Docker internamente (dentro de su organización). Docker incluso tiene un registro público, conocido como Docker Hub, gratuito para almacenar imágenes de Docker.

Pero, el problema con el registro público de Docker es que las imágenes que carga en él se vuelven públicas. Esto no es lo que usted o su organización esperan cuando trabajan muchas horas para construir una imagen y eso se hace público.

Para superar este obstáculo, puede configurar un registro de Docker para su proyecto de forma privada para que solo usted o su organización puedan almacenar las imágenes de Docker en él y distribuirlas entre sus compañeros de trabajo.

Aquí, en esta guía técnica, discutiremos cómo configurar Docker Private Registry en CentOS 7 / Ubuntu 16.04 / Fedora 26/ 25 .

Infraestructura

Aquí, estoy usando un entorno mixto (SO) para demostrar. Le recomiendo que use solo un entorno homogéneo que sea fácil para solucionar los problemas que surjan.

Requisitos

Instale el motor de Docker en todos sus nodos y asegúrese de que el servicio de Docker esté en funcionamiento.

LEER :Cómo instalar Docker CE en CentOS 7
LEER :Cómo instalar Docker CE en Ubuntu 16.04
LEER :Cómo instalar Docker CE en Fedora 26/25

Configurar el registro privado de Docker

Inicie sesión en el nodo de registro y extraiga la imagen de registro de Docker Hub.

[root@registry ~]# docker pull registry

Elija si desea utilizar el registro de Docker simple o seguro.

Registro simple de Docker

[root@registry ~]# docker run -dit -p 5000:5000 --name registry registry

Registro privado seguro de Docker

De forma predeterminada, el nodo Docker utiliza una conexión segura a través de TLS para cargar o descargar imágenes hacia o desde el registro privado. Puede usar certificados TLS firmados por CA o autofirmados en el servidor de registro.

Aquí, usaré un certificado autofirmado para asegurar Docker Registry. Vamos a crear un certificado autofirmado usando el siguiente comando.

[root@registry ~]# mkdir -p /certs

[root@registry ~]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout /certs/ca.key -x509 -days 365 -out /certs/ca.crt

Generating a 4096 bit RSA private key
............................................++
.....................................................................................................++
writing new private key to '/certs/ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:IN
State or Province Name (full name) []:TN
Locality Name (eg, city) [Default City]:CHN
Organization Name (eg, company) [Default Company Ltd]:ITzGeek
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname) []:registry.itzgeek.local
Email Address []:[email protected]

Reemplace “registry.itzgeek.local ” con el FQDN de su servidor de registro.

Certificado generado “ca.crt” debe colocarse en todos sus nodos de compilación/implementación para confiar en este certificado.

Inicie el contenedor de registro de Docker con la información del certificado.

[root@registry ~]# docker run -d -p 5000:5000 --restart=always --name registry -v /certs:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/ca.crt -e REGISTRY_HTTP_TLS_KEY=/certs/ca.key registry

Ahora, tiene un contenedor de servidor de registro llamado "registro ” ejecutándose en “registry.itzgeek.local “.

[root@registry ~]# docker ps

Salida:

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
8641fbc895f5        registry            "/entrypoint.sh /e..."   44 seconds ago      Up 41 seconds       0.0.0.0:5000->5000/tcp   registry

Cortafuegos

Deberá abrir los siguientes puertos en el firewall para que el registro de Docker esté disponible fuera de la red (para build.itzgeek.local /implementar.itzgeek.local )

Debe ejecutar el siguiente comando en el servidor Docker Registry (registry.itzgeek.local), depende de su sistema operativo.

Si su Docker Registry está en CentOS 7/Fedora 26/25,

[root@registry ~]# firewall-cmd --permanent --add-port=5000/tcp
[root@registry ~]# firewall-cmd --reload

Si su Docker Registry está en Ubuntu 16.04,

root@registry:~# ufw status
root@registry:~# ufw allow 5000/tcp
root@registry:~# ufw reload ufw enable

Ahora Docker Registry está listo para distribuir imágenes de Docker.

Cree y cargue una imagen de Docker en un servidor de registro privado

Inicie sesión en el nodo del motor Docker de compilación, ej. “construir.itzgeek.local

Crear una imagen de Docker

Vamos a crear una imagen de Docker (para un contenedor docker personalizado) para cargarla en el servidor de registro privado. Puede construir/crear un contenedor de imágenes de tres formas.

1. Compromiso
2. Dockerfile
3. Componer Docker.

Cree y mantenga su imagen acoplable lista para cargar siguiendo cualquiera de los métodos enumerados anteriormente.

LEER :Cómo crear imágenes de Docker con Docker Commit
LEER :Cómo crear imágenes de Docker con DockerFile

Creé una imagen acoplable llamada “mycentos:httpdv1.0 ” en “build.itzgeek.local ” y ahora lo cargaremos en el servidor de registro privado.

root@build:~# docker images

Salida:

Ahora, cambie el nombre de la imagen de la ventana acoplable algo así como registryserver:portnumber/image name:tag .

Si el nombre de la imagen no coincide con el formato dado, el comando push o pull de la ventana acoplable intentará cargar o descargar la imagen desde el registro público, no desde el registro privado.

Para cambiar el nombre de la imagen de la ventana acoplable, use docker tag comando.

root@build:~# docker tag mycentos:httpdv1.0 registry.itzgeek.local:5000/mycentos:httpdv1.0

Verifique nuevamente la lista de imágenes de Docker.

Subir una imagen de Docker

Depende del modo de comunicación (Segura o No segura ) de Docker Registry, siga cualquiera de los siguientes métodos.

No seguro (Registro Http simple)

Edite/Cree el archivo “daemon.json ” en “/etc/docker/ ” directorio.

root@build:~# vi /etc/docker/daemon.json

Agregue los siguientes contenidos en él.

{
  "insecure-registries" : ["registry.itzgeek.local:5000"]
}

Seguro (autofirmado)

Copie el certificado “ca.crt ” del servidor de registro “registry.itzgeek.local ” a “/etc/docker/certs.d/registry.itzgeek.local:5000/ca.crt ” en “build.itzgeek.local “.

root@build:~# mkdir -p /etc/docker/certs.d/registry.itzgeek.local:5000/

root@build:~# scp -pr [email protected]:/certs/ca.crt /etc/docker/certs.d/registry.itzgeek.local:5000/

En ambos casos, deberá reiniciar el servicio del motor de Docker.

root@build:~# systemctl restart docker

Sube la imagen de la ventana acoplable al servidor de registro privado usando el siguiente comando.

root@build:~# docker push registry.itzgeek.local:5000/mycentos:httpdv1.0

Descargar e implementar la imagen del contenedor Docker desde el servidor de registro privado

Inicie sesión en el nodo del motor Docker de implementación, Ex. “implementar.itzgeek.local “.

Según el modo de comunicación (seguro o no seguro) de Docker Registry, siga cualquiera de los siguientes métodos.

No seguro (Registro Http simple)

Edite/Cree el archivo “daemon.json ” en “/etc/docker/ ” directorio.

[root@deploy ~]# vi /etc/docker/daemon.json

Agregue los siguientes contenidos en él.

{
  "insecure-registries" : ["registry.itzgeek.local:5000"]
}

Seguro (autofirmado)

Copie el certificado “ca.crt ” del servidor de registro “registry.itzgeek.local ” a “/etc/docker/certs.d/registry.itzgeek.local:5000/ca.crt ” en “deploy.itzgeek.local “.

[root@deploy ~]# mkdir -p /etc/docker/certs.d/registry.itzgeek.local:5000/

[root@deploy ~]# scp -pr [email protected]:/certs/ca.crt /etc/docker/certs.d/registry.itzgeek.local:5000/

En ambos casos, deberá reiniciar el servicio del motor de Docker.

[root@deploy ~]# systemctl restart docker

Descargue la imagen de la ventana acoplable al servidor de registro privado con el siguiente comando.

[root@deploy ~]# docker pull registry.itzgeek.local:5000/mycentos:httpdv1.0

Ahora, revisa la lista de imágenes disponibles usando “imágenes acoplables ” comando

[root@deploy ~]# docker images

Salida:

Ahora la imagen de Docker está lista para su implementación.

LEER :Cómo implementar contenedores Docker:interfaz de línea de comandos

Eso es todo.


Cent OS
  1. Cómo configurar y usar el registro privado de Docker

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

  3. Cómo configurar Autofs en CentOS 7 / Ubuntu 16.04 / Debian 9 / Fedora 27/26

  4. Cómo configurar el servidor SVN en CentOS, RHEL y Fedora

  5. Cómo instalar docker en CentOS/RHEL/Fedora

Cómo instalar y configurar Docker Swarm en CentOS 7 / Ubuntu 16.04 / Fedora 26/25

Cómo instalar Dropbox en Fedora 27 / Fedora 26/25/24

Cómo instalar Docker en CentOS

Cómo configurar Openshift Origin en CentOS 8

Cómo instalar Docker en CentOS 7

Cómo crear un registro Docker privado en Ubuntu Linux

    Nombre de host Dirección IP Sistema Operativo Propósito
    registro.itzgeek.local 192.168.12.10 CentOS 7 Actúa como servidor de registro privado de Docker
    construir.itzgeek.local 192.168.12.20 Ubuntu 16.04 Actúa como nodo del motor de Docker donde los desarrolladores crearán las imágenes de Docker con dockerfile o docker compose, y luego cargarán esas imágenes en el servidor de registro privado de docker anterior.
    implementar.itzgeek.local 192.168.12.30 Fedora 26/25 Actúa como nodo del motor Docker donde implementamos contenedores descargados (extracción) del servidor de registro privado.