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.
Ahora que, en este tutorial de Docker ya has tratado tanto con imágenes como con contenedores, has empezado a ejecutar tus propios contenedores e incluso has podido crear tu propia imagen con docker a partir de un contenedor, es conveniente tratar sobre Docker Hub.
Hasta el momento, el mayor trato que hemos tenido con Docker Hub es para bajar imágenes, que alguien, ha subido previamente. También has visto que es posible subir tus propias imágenes. Y no solo has visto que es posible subir tus propias imágenes, sino que has visto que es realmente conveniente.
Tener tus propias imágenes en Docker Hub, tiene interesantes ventajas, entre las que se encuentra por supuesto, la posibilidad de utilizar esa imagen que subiste donde quieras y por quien quieras.
¿Pero que es Docker Hub y como tratar con este servicio?
Docker Hub
¿Que es Docker Hub?
Docker Hub es un servicio proporcionado por Docker donde puedes tanto guardar como compartir tus propias imágenes con otros, como también, buscar y descargar las imágenes de otros.
Así, Docker Hub, tiene las siguientes características,
- Está organizado por repositorios, donde puedes tanto subir como descargar imágenes.
- Es posible gestionar el acceso a repositorios privados de imágenes a través de Teams y Organizations.
- Como ya viste en los primeros capítulos del tutorial, tienes a tu disposición imágenes oficiales. Se trata de una selección de imágenes especialmente trabajadas. Imágenes de Sistemas Operativos que son un punto de partida fundamental para la mayoría de usuarios. Imágenes donde encontrarás las mejores prácticas para crear tus propios Dockerfile (esto lo verás en el próximo capítulo) y mucho mas.
- Imágenes oficiales de terceros. Docker tiene un concepto denominado Docker Hub Publisher o Verified Publisher. Un Verified Publisher, es una empresa, normalmente, o un usuario, que forma parte del programa de partner de Docker. Para ello se ha seguido un programna de certificación de Docker.
- Docker Hub permite la construcción automatizada de imágenes a partir de repositorios de GitHub y Bitbucket, subiendo posteriormente estas imágenes a Docker Hub.
- Webhooks. Tiene la posibilidad de enlazar acciones desencadenadas a partir de que se ha subido una nueva imagen a los repositorios. Como ya te puedes imaginar, esto es una gran ventaja, puesto que te permite integrar Docker Hub, con otros servicios, y de esta forma automatizar tus tareas.
Primeros pasos en Docker Hub
El primer paso necesario y obligatorio, para empezar a trabajar con Docker Hub es que te des de alta en este servicio, para lo que te tienes que registrar en Docker Hub.
¿Cuanto te cuesta el servicio? Existen diferentes planes de precios, tanto para usuarios individuales como para organizaciones. En el caso de ti y de mi, indicarte que existe un plan gratuito. Evidentemente tiene, sus limitaciones, y es que solo puedes tener un repositorio privado, y solo pudes construir una imagen simultáneamente.
A partir de aquí los preciso van desde los 7 $/mes hasta los 500 $/mes. Donde en el primer caso tienes 5 repositorios privados y 5 construcciones en paralelo, hasta 500 repositorios privados y 500 construcciones en paralelo.
A mi, en particular, que abogo por el Open Source, como comprenderás no me preocupa lo más mínimo, porque no voy a tener repositorios privados. Quizá para realizar alguna prueba, pero, no es el objetivo principal. Lo interesante de este servicio, es poder compartir, mis imágenes contigo y con quien las quiera utilizar.
Creando tu primer repositorio
Una vez ya tienes tu cuenta en Docker Hub, el siguiente paso es crear tu primer repositorio. Para esto, tan solo tienes que pulsar en el menú sobre Repositories
, que te llevará a tu listado de repositorios, que actualmente estará vacío. Aquí, tienes que hacer clic en el botón Create Repository+
.
En este punto, tienes que elegir algunas opciones,
- Lo primero y principal, es que tienes que ponerle un nombre a ese repositorio. El repositorio vendrá como
tu-nombre-de-usuario/el-nombre-del-repositorio
. A sí, por ejemplo, mis repositorios sonatareao/lo-que-sea
. - Si quieres que el repositorio sea público, y entonces aparezca en los resultados de búsqueda de Docker Hub. O por el contrario, prefieres que el repositorio sera privado y no sea accesible a otros.
- Puedes definir algunas opciones adicionales relacionadas con la creación de imágenes a traveś de repositorios en GitHub y Gibucket.
Hecho esto, que básicamente es tan complicado como poner un nombre a tu repositorio, ya podrías empezar a subir imágenes como si no hubiera un mañana.
Subiendo tu primera imagen
Ciertamente, para subir una imagen a tu repositorio recién creado, vas a necesitar esa imagen. Sin embargo, en el capítulo anterior ya creaste tu primera imagen a partir de un contenedor. Esto, lo hiciste con la instrucción,
docker commit test01 atareao/nginx:autocertificado
Ahora lo único que tienes que hacer es subirlo a tu repositorio de Docker Hub. Ahora bien, es preciso que hagas login para poder trabajar y subir imágenes. Para esto tan solo tienes que ejecutar
docker login
Para esto, al igual que haces en Git, solo tienes que ejecutar,
docker push atareao/nginx:autocertificado
De esta manera el formato tiene que ser de la siguiente forma.
docker commit <contenedor existente> <usuario hub>/<repositorio>[:<tag>]
y
docker push <usuario-hub>/<repositorio>:<tag>
Repositorios privados
Como te he comentado, tienes la posibilidad de tener un repositorio privado, en el caso de que tengas una cuenta gratuita. Este repositorio privado te permite tener imágenes privadas. Para crear un repositorio privado, tan solo tienes que marcar la opción privada durante la creación del repositorio.
Igualmente, tienes la posibilidad de utilizar triggers
. Esta opción te permite, en el caso de que tengas conectada tu cuenta de GitHub, que cada vez que realices un git push
a tu repositorio de GitHub se ejecute una nueva construcción de la imagen en Docker Hub.
Para los repositorios privados existe la figura del colaborador. El colaborador es otro usuario al que tu le das acceso a tu repositorio privado. Desde el momento en el que designas a un usuario como colaborador, este puede hacer push
y pull
a ese repositorio privado.
Sin embargo, un colaborador no puede realizar ninguna tarea administrativa adicional, tal como borrar el repositorio o cambiar el repositorio de privado a público.
Buscando repositorios en Docker Hub
Una de las grandes ventajas de Docker Hub es que te permite utilizar tanto tus propias imágenes como las creadas por otros. Sin embargo, para esto es necesario que esta herramienta disponga de un potente motor de búsqueda que te permita localizar las imágenes que necesitas.
De esta manera, Docker Hub te permite no solo buscar directamente desde la interfaz gráfica, sino que también puedes buscar desde la línea de comandos. Así, por ejemplo, abre un terminal y ejecuta,
docker search ubuntu
Esto te devolverá un total de hasta 26 entradas (depende de las que sean públicas y disponibles en el momento de ejecutar la búsqueda). Así, por ejemplo, algunas de las entradas,
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
ubuntu Ubuntu is a Debian-based Linux operating sys… 10036 [OK]
dorowu/ubuntu-desktop-lxde-vnc Docker image to provide HTML5 VNC interface … 350 [OK]
rastasheep/ubuntu-sshd Dockerized SSH service, built on top of offi… 231 [OK]
consol/ubuntu-xfce-vnc Ubuntu container with "headless" VNC session… 187 [OK]
ubuntu-upstart Upstart is an event-based replacement for th… 100 [OK]
ansible/ubuntu14.04-ansible Ubuntu 14.04 LTS with ansible 98 [OK]
neurodebian NeuroDebian provides neuroscience research s… 59 [OK]
1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5 ubuntu-16-nginx-php-phpmyadmin-mysql-5 50 [OK]
ubuntu-debootstrap debootstrap --variant=minbase --components=m… 40 [OK]
nua
Como ves tienes dos tipos de resultado. Unos como ubuntu
o ubuntu-upstart
que son las imágenes oficiales y otros como ansible/ubuntu14.04-ansible
que son imágenes creadas por un usuario y disponibles desde un repositorio público.
Puntuar repositorios
Por último, pero no menos importante, indicarte que tienes la posibilidad de puntuar repositorios. Para puntuar los repositorios simplemente tienes que otorgarles estrellas. Por supuesto, que de la misma forma que tu puedes puntuar repositorios, otros pueden puntuar tus repositorios.
Esto te permite no solo dar relevancia a algunos repositorios, si no también una forma de saber cuales son tus repositorios preferidos.
Mas información,