¿Qué es?
Un repositorio de software.
Emmmm, vale, me quedo igual, Ilústrame!!!! (Famosa frase, para mí, de un gran jefe de proyectos, que tuve en una empresa, del grupo agbar)
En la Wikipedia (http://es.wikipedia.org/wiki/Repositorio_de_software) nos dicen lo siguiente:
Un repositorio de software es un lugar de almacenamiento del cual pueden ser recuperados e instalados los paquetes de software en un ordenador.
¡Pues vale! ¿Y para qué me sirve?
Pues, en este caso, para almacenar localmente, nuestras imágenes de docker, ya que docker registry oficial y gratuito, deja mucho que desear, por ser demasiado básico (http://docs.docker.com/registry/)
Una vez superada la pequeña introducción, vamos al lío.
Primero, descargamos jdk de Oracle (sí la de Oracle y no la openjdk , con el siguiente comando:
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u191-b12/2787e4a523244c269598db4e85c51e0c/jdk-8u191-linux-x64.rpm
Lo instalamos con:
yum install jdk-8u191-linux-x64.rpm
Vamos al directorio /opt.
cd /opt
Descargamos la última versión de Sonatype Nexus Repository OSS 3.
wget http://download.sonatype.com/nexus/3/latest-unix.tar.gz
Descomprimimos el fichero descargado.
tar xvf latest-unix.tar.gz
Una vez descomprimido el fichero de instalación, podemos borrarlo para liberar espacio en disco.
rm latest-unix.tar.gz
Establecemos un enlace simbólico al directorio de instalación de Nexus.
ln -s nexus-3.* nexus
Por motivos de seguridad, no se recomienda ejecutar Nexus con usuario root. Creamos un usuario específico para ejecutar Nexus.
adduser nexus
Cambiamos el propietario de los ficheros de instalación de Nexus al nuevo usuario que hemos creado.
chown -R nexus:nexus nexus* sonatype-work
Editamos el fichero de configuración /opt/nexus/bin/nexus.rc, descomentamos el parámetro run_as_user y le ponemos como valor el nombre del nuevo usuario que hemos creado para ejecutar Nexus.
run_as_user=»nexus»
Creamos un enlace simbólico para el script de servicio nexus en la carpeta /etc/init.d.
ln -s /opt/nexus/bin/nexus /etc/init.d/nexus
Ejecutamos los siguientes comandos para añadir el servicio nexus al arranque.
systemctl enable nexus
Para iniciar el servicio de Nexus, ejecutamos el siguiente comando.
systemctl start nexus
Editamos el fichero /opt/sonatype-work/nexus3/etc/nexus.properties y cambiamos el puerto de 8081 a 8082 ( tengo el puerto ya usado, no es obligatorio cambiarlo ) y también des comentamos la línea application-host, dejando así el fichero:
Añadimos la línea nexus – nofile 65536 al fichero /etc/security/limits.conf encima de # End of file
Reiniciamos el servicio de nexus
systemctl restart nexus
Ahora, ya podemos acceder vía web, para configurar Nexus, por la dirección http://ip_del_servidor:8082/
Pulsamos en Sign in y accedemos con admin / admin123
Pulsamos en la rueda
Pulsamos en Repositories
Create repository
Docker (hosted)
Dejamos todas las opciones, como se ven en la imagen
Pulsamos en Create repository
Pulsamos en Security -> Users
Pulsamos en Create local user
Dejamos los siguientes datos, estableciendo el password por lo que queramos y pulsamos Create local user:
Ya tenemos configurado nuestro registry local, para subir las imágenes de los contenedores.
Vale, ¿y cómo lo uso?
Pues, de la siguiente manera.
Primero, tenemos que decirle a docker, que confíe en este registry no seguro (no es http), creando el fichero /etc/docker/daemon.json con el siguiente comando:
echo << EOF > /etc/docker/daemon.json
{
"insecure-registries" : ["ip_del_servidor:8123"],
"disable-legacy-registry": true
}
EOF
Luego, reiniciamos docker, con el comando:
systemctl restart docker
Una vez reiniciado docker, ya podemos loguearnos en el nexus, con el comando:
docker login -u docker ip_del_servidor:puerto
Nos dice docker, que se ha logeado correctamente, y ya podemos trabajar con nuestro registry local.
Ahora, nos descargamos una imagen, en este caso, la de wordpress, como usamos en el post de docker-registry (http://chechy.xyz/docker-compose-ese-gran-aliado/)
Etiquetamos la imagen, para subirla a nexus:
docker tag wordpress:latest ip_del_servidor:8123/wp:latest
Y la subimos, con el siguiente comando:
docker push ip_del_servidor:8123/wp:latest
Nos indica docker, qué la ha subido, Vamos a comprobarlo al nexus
¡Aquí la tenemos!
Para usarla, solo necesitamos logear docker contra el nexus y hacer un docker pull.