Cada vez que instalamos Docker en servidores CentOS o RHEL, el registro público de Docker está habilitado, por lo que cuando ejecutamos ‘tirar de la ventana acoplable‘ o ‘búsqueda acoplable‘ irá al registro público de Docker (Centro acoplable) y obtendrá las imágenes de contenedor requeridas. Pero no es idea obtener las imágenes del contenedor de Docker del registro público cuando se utiliza Docker en una organización; como práctica recomendada, deberíamos tener nuestro propio registro o repositorio privado de Docker. Docker Registry o repositorio es un lugar donde se almacenan las imágenes de contenedores de Docker.
En este artículo demostraré cómo configurar nuestro propio Registro privado Docker en CentOS 7.x/RHEL 7.x. Usaré tres servidores CentOS 7.x y supondré que Docker ya está instalado y su servicio está en funcionamiento en los tres servidores. A continuación se muestran los detalles de mis tres servidores:
- docker-repo.example.com { 192.168.0.60} -> Actuará como mi servidor de registro privado Docker
- dkengine1.example.com { 192.168.0.70} -> En este servidor, los administradores y desarrolladores de Docker crearán sus propias imágenes de contenedor con dockerfile o con compose y luego cargarán estas imágenes en su propio servidor de registro privado de docker (docker-repo. ejemplo.com) con el comando push docker
- dkengine2.example.com { 192.168.0.80} -> En este servidor, descargaremos imágenes del contenedor docker desde nuestro propio servidor de registro privado con ‘tirar de la ventana acoplablecomando
Nota : Actualice el archivo /etc/hosts en caso de que el servidor DNS no esté configurado para que se pueda acceder a los servidores con su respectivo nombre de host o nombre dns.
192.168.0.60 docker-repo.example.com docker-repo 192.168.0.70 dkengine1.example.com dkengine1 192.168.0.80 dkengine2.example.com dkengine2
Realice los siguientes pasos para configurar nuestro propio Docker Private Registry según el escenario discutido anteriormente
Paso:1 Descargue e inicie el Contenedor de registro en su servidor de registro privado
Inicie sesión en el servidor que desea configurar como Docker Private Registry Server, en mi caso es «docker-repo.example.com». Supongo que el paquete Docker ya está instalado y su servicio está en funcionamiento. En caso de que Docker no esté instalado, consulte lo siguiente
La siguiente tarea es iniciar el programa o secuencia de comandos que configurará y convertirá su servidor en Registry Server. Ese programa o secuencia de comandos se inicia ejecutando un contenedor de registro docker. Primero descarguemos el contenedor de registro usando el comando debajo
[[email protected] ~]# docker pull registry
Una vez descargada la imagen, verifique qué comandos se ejecutarán cuando iniciemos la imagen del contenedor de registro.
[[email protected] ~]# docker history registry
Ahora inicie el contenedor de registro usando el siguiente comando
[[email protected] ~]# docker run -dit -p 5000:5000 --name registry registry bf8e703b0149211bb923beeb042f8e656bf407b21646f101eb58e0acd4409c24 [[email protected] ~]#
El comando anterior iniciará el contenedor de registro con el registro de nombres y también estableceremos la regla de palmaditas para que si llega alguna solicitud a ‘docker-repo.ejemplo.com‘ en el puerto 5000, la solicitud se redirigirá al contenedor de registro en el puerto 5000.
[[email protected] ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES bf8e703b0149 registry "/entrypoint.sh /e..." 5 minutes ago Up 5 minutes 0.0.0.0:5000->5000/tcp registry [[email protected] ~]#
Nota: En caso de que el firewall esté habilitado en su servidor de registro privado, abra el puerto 80 con el siguiente comando
[[email protected] ~]# firewall-cmd --permanent --add-port=80/tcp success [[email protected] ~]# firewall-cmd --reload success [[email protected] ~]#
Paso: 2 Cree la imagen del contenedor Docker y cárguela en el servidor de registro privado
Supongamos que he compilado la imagen del contenedor docker de Ubuntu 16.04 con Dockerfile en ‘dkengine1.ejemplo.com‘. En caso de que no esté familiarizado con dockerfile, consulte lo siguiente:
Podemos cargar una imagen de contenedor en el servidor de registro con el comando «docker push», pero antes de comenzar a cargarlo, debemos realizar dos cambios.
1 Asegúrese de que el nombre de la imagen se cree con el formato “nombre del servidor: número de puerto/nombre de la imagen: etiquetas“. De forma predeterminada, el comando docker pull intentará cargar la imagen en el registro público y, si creamos un nombre de imagen con el formato mencionado anteriormente, el comando docker pull lo cargará en el servidor mencionado en el nombre de la imagen. entonces, en mi caso, el nombre del servidor sería «docker-repo.example.com»
Para cambiar el nombre de la imagen de la ventana acoplable, use el comando de etiqueta de la ventana acoplable, el ejemplo se muestra a continuación
[[email protected] ~]# docker tag ubuntu:16.04 docker-repo.example.com:5000/ubuntu:16.04 [[email protected] ~]#
2 Cambie la conexión https push de la ventana acoplable a http. Siempre que usemos el comando ‘docker push’, intentará establecer una conexión https con el servidor de registro, pero en el caso de la configuración del servidor de registro privado, solo acepta la conexión http del cliente (dkengine1.example.com)
Edite el archivo “/usr/lib/systemd/system/docker.servicio” y cambiar el parámetro
ExecStart=/usr/bin/dockerd
a
ExecStart=/usr/bin/dockerd –insecure-registry docker-repo.example.com:5000
Vuelva a cargar el servicio daemon y reinicie el servicio Docker
[[email protected] ~]# systemctl daemon-reload [[email protected] ~]# systemctl restart docker [[email protected] ~]#
Ahora cargue la imagen en el servidor de registro privado usando el comando debajo
[[email protected] ~]# docker push docker-repo.example.com:5000/ubuntu:16.04 The push refers to a repository [docker-repo.example.com:5000/ubuntu] 56827159aa8b: Pushed 440e02c3dcde: Pushed 29660d0e5bb2: Pushed 85782553e37a: Pushed 745f5be9952c: Pushed 16.04: digest: sha256:6b079ae764a6affcb632231349d4a5e1b084bece8c46883c099863ee2aeb5cf8 size: 1357 [[email protected] ~]#
Paso: 3 Descargue la imagen del contenedor Docker desde el servidor de registro privado
Inicie sesión en el servidor ‘dkengine2.example.com’ y use el comando ‘docker pull’ para descargar la imagen del contenedor desde su servidor de registro privado. Por defecto, el comando docker pull también establece una conexión https con el servidor de registro, pero nuestro registro privado solo acepta una conexión http.
Edite el archivo “/usr/lib/systemd/system/docker.service” y cambie el parámetro
ExecStart=/usr/bin/dockerd
a
ExecStart=/usr/bin/dockerd –insecure-registry docker-repo.example.com:5000
Vuelva a cargar el servicio daemon y reinicie el servicio docker
[[email protected] ~]# systemctl daemon-reload ; systemctl restart docker [[email protected] ~]#
Ahora descargue la imagen del contenedor usando el comando debajo
[[email protected] ~]# docker pull docker-repo.example.com:5000/ubuntu:16.04 16.04: Pulling from ubuntu fec6b243e075: Pull complete 190e0e9a3e79: Pull complete 0d79cf192e4c: Pull complete 38398c307b51: Pull complete 356665655a72: Pull complete Digest: sha256:6b079ae764a6affcb632231349d4a5e1b084bece8c46883c099863ee2aeb5cf8 Status: Downloaded newer image for docker-repo.example.com:5000/ubuntu:16.04 [[email protected] ~]#
Ahora verifique la imagen con ‘Imágenes de dockercomando
[[email protected] ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker-repo.example.com:5000/ubuntu 16.04 0ef2e08ed3fa 3 weeks ago 130 MB [[email protected] ~]#
Eso es todo de este artículo. Espero que tengan una idea de cómo configurar su propio Docker Private Registry Server. Si te gusta este artículo, no dudes en compartirlo 🙂