Este es uno de los capítulos del tutorial Tutorial de Docker. Encontrarás los enlaces a todos los de capítulos, al final de este artículo.
Hasta el momento siempre has estado utilizando Docker Hub, tanto para descargar tus imágenes de contenedores, como para subir tus imágenes para compartirlas con otras personas. O simplemente, para tenerlas ahí, a tu disposición para cuando las necesites o las quieras utilizar. Sin embargo, y como ya te habías imaginado, Docker Hub no es mas que otro servicio. Otro servicio como los que has instalado en otras ocasiones. Y si, como también te imaginabas se trata de un servicio Open Source, con lo que tu también lo puedes tener instalado en tu equipo. Y por supuesto, y como no podía ser de otra forma, también puedes tener instalado como un contenedor. Así, en pocas palabras, Docker Registry es un servidor de imágenes docker. Se trata de un servidor que lo puedes tener instalado donde lo necesites, si es que lo necesitas. Desde una Raspberry Pi, a un NAS o algo mucho mas potente. Esto ya depende de para lo que lo necesites y por supuesto, para lo que lo quieras utilizar.
En mi caso, actualmente, estoy mas por la labor de subir y compartir imágenes que de crear repositorios privados o mantener mi propio Docker Registry. Pero, evidentemente, para una empresa de desarrollo de software se trata de una excelente solución. Una forma de tenerlo todo bajo control, y solo liberar las imágenes cuando el producto sea estable o cuando se considere.
Así, en este nuevo capítulo del tutorial sobre docker, vas a adentrarte en esto del Docker Registry, o un servidor de imágenes docker, como puedes tenerlo instalado, y que puedes hacer con él.
Docker Registry o un servidor de imágenes docker
Como te adelantaba en la introducción de este capítulo, Docker Registry es un servicio de almacenamiento y distribución de imágenes docker, Open Source, liberado bajo licencia Apache
¿Porque utilizar tu propio servidor de imágenes docker?
También te he adelantado algunas de las razones para tener tu propio servidor de imágenes docker, pero por poner alguna mas sobre la mesa,
- Te permite controlar donde se están guardando tus imágenes
- Puedes controlar todo el proceso de distribución de imágenes, sin necesidad de recurrir a terceros
- Con todo ello integras el almacenamiento y distribución de imágenes dentro de tu flujo de trabajo.
Requerimientos
Pues decirte que, básicamente, con lo que tienes, ya puedes tener tu propio servidor de imágenes docker. Solo necesitas descargar la imagen y levantar el contenedor. Algo, que ya has realizado en capítulos anteriores del tutorial, y que se resume básicamente en ejecutar esta instrucción,
docker run -d -p 5000:5000 --name registry registry:2
Jugando un poquito con Docker Registry
Una vez tienes levantado tu Docker Registry, ese servidor de imágenes docker, solo queda hacer alguna prueba. Por aquello de no malgastar, prueba con una imagen de busybox que apenas ocupa algo mas de un mega, y es mas que suficiente para tus propósitos.
Puedes hacer esto con alguna imagen que tengas descargada, o con alguna imagen tuya. Yo ahora mismo, por no recurrir a la imagen de Chiquito, o algún otro ejemplo, lo que haré es utilizar esa imagen que te he comentado. Así, como primer paso, descargo la imagen de Docker Hub,
sudo pull busybox
A continuación etiqueta tu imagen de forma que apunte a tu registro. Entiendo que el Docker Registry lo has levantado en tu equipo local. Si lo hubieras levantado en una raspberry o en otro equipo, solo tienes que reemplazar localhost
por la IP correspondiente.
docker image tag busybox localhost:5000/busybox:latest
Y ahora borra la imagen local que tienes, y descárgala desde tu Docker Registry, en lugar de descargarla de Docker Hub. El primer paso, es de sobra conocido por ti,
docker rmi localhost:5000/busybox:latest
El segundo paso, también lo conoces de sobra, pero ahora, en lugar de descargarlo desde Docker Hub, lo vas a hacer desde tu Docker Registry, desde tu servidor de imágenes docker personal. Y es tan sencillo como,
docker pull localhost:5000/busybox:latest
Como esto no era mas que un ejemplo, ahora solo te queda detener tu contenedor de imágenes y borrar toda la información para que no te ocupe espacio en tu equipo.
docker container stop registry && docker container rm -v registry
Algunas consideraciones adicionales
Lo primero y principal es utilizar la opción --restart=always
, esta opción te asegura de que el demonio de docker intente levantar tu Docker Registry siempre. Pero no solo esto, sino que además, cuando se inicie Docker también intentará levantar tu contenedor.
Por otro lado, imágenes e información se guardarán, por defecto, en un volumen de docker en el anfitrión. Sin embargo, esto es configurable, y lo puedes guardar en algún destino concreto de tu equipo.
Así combinando ambas opciones, la forma de montar tu Docker Registry quedaría recogida en las siguientes líneas,
docker run -d \
-p 5000:5000 \
--restart=always \
--name miregistr \
-v /home/lorenzo/docker-registry:/var/lib/registry \
registry:2
Por supuesto necesitas cambiar el directorio que he puesto, por el que mejor te venga.
Conclusión
Esto que te he mostrado no es mas que una pincelada de lo que puede ser montar tu propio Docker Registry. Tampoco quiero profundizar mas en ello, porque a priori, yo no lo voy a utilizar, tal y como te he comentado anteriormente.
Más información,
Imagen de portada de Robby McCullough en Unsplash