Publicar tu imagen de Docker en GitHub Packages

Una de las características de la que te puedes aprovechar si usas GitHub como repositorio de código fuente es la posibilidad de almacenar en el mismo sitio tus paquetes. Estos pueden ser paquetes de Node, Nuget, Maven, RubyGem e incluso imágenes de Docker que quieras compartir con la comunidad o que quieras usar en tus fujos con GitHub Actions. Hoy quiero contarte cómo puedes subir tus imágenes de Docker a GitHub Packages.

Iniciar sesión para publicar en GitHub Packages

En este artículo voy a subir una imagen desde mi local a un repositorio que ya tengo creado en GitHub. Para ello, lo primero que necesito es iniciar sesión con el cliente de Docker de mi máquina en GitHub Packages. Las credenciales que necesitas son tu usuario de GitHub y un Personal Access Token, o PAT, que puedes conseguir desde aquí: https://github.com/settings/tokens. Este debe tener los permisos que se indican en este apartado de la documentación:

PAT con los permisos para GitHub Packages

Guarda el token generado en un fichero y ejecuta el siguiente comando con él:

cat PAT.txt | docker login https://docker.pkg.github.com -u USERNAME --password-stdin

El resultado debería de ser Login Succeeded y con ello ya podrías tanto publicar, descargar y eliminar tus imágenes.

Etiquetar la imagen con la nomenclatura de GitHub Packages

La nomenclatura que debe seguir tu imagen para poder subirla al Packages de tu repositorio es la siguiente:

docker tag IMAGE_NAME docker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME:VERSION

Para este ejemplo he utilizado un repositorio privado dentro de mi cuenta (0gis0) llamado hello-devops. Por lo que la etiqueta en mi caso debería de ser de la siguiente manera:

docker tag hellodevops docker.pkg.github.com/0gis0/hello-devops/hello-devops:v1

Publicar la imagen en el repositorio de GitHub

Ahora que ya tenemos la sesión iniciada y una imagen etiquetada adecuadamente solo nos queda publicarla. Para ello utilizamos el mismo comando que cuando las subimos a Docker Hub o a Azure Container Registry:

docker push docker.pkg.github.com/0gis0/hello-devops/hello-devops:v1

Si todo ha ido bien verás que el proceso de push se ha ejecutado sin problemas:

Y que tu imagen puede verse en el apartado Packages de tu repositorio:

También puedes ver todos los paquetes que has publicado, en los diferentes repositorios, en esta dirección: https://github.com/TU_USUARIO?tab=packages

Para descargar la imagen, si el repositorio es privado necesitarás tener iniciada sesión en el registro de GitHub Packages (y tener los permisos necesarios) y en el caso de ser público podrás descargarla sin necesidad de hacer el proceso inicial.

Recientemente se anunció GitHub Container Registry, todavía en preview, lo cual nos va a permitir publicar imágenes a nivel de cuenta u organización en lugar de a nivel de repositorio. Una de las ventajas que nos va a aportar es la posibilidad de ajustar los permisos de manera independiente del repositorio. Es decir, que podemos tener nuestro repositorio privado pero que la imagen resultante sea pública, por ejemplo. En el próximo artículo te cuento cómo empezar a familiarizarse con esta nueva característica.

¡Saludos!

logo lemoncode

 

Bootcamp Devops

Si tienes ganas de meterte en el área de Devops, formo parte del
equipo de docentes del Bootcamp Devops Lemoncode, ¿Te animas a
aprender con nosotros?

Más Info