Ayer te conté que GitHub te permite publicar diferentes tipos de paquetes en tus repositorios, entre ellos imágenes de Docker. Sin embargo, a día de hoy con ese formato no te permite desligar una imagen de un repositorio y este está sujeto a la visibilidad y permisos del mismo. Es por ello que a finales del año pasado se lanzó GitHub Container Registry, todavía en preview, que nos permitirá que las imágenes cuelguen directamente de la organización o cuenta de usuario, en lugar de un repositorio concreto, permitiendo además la posibilidad de acceso anónimo a imágenes que marquemos como públicas, simplificando así muchos escenarios. En este artículo te cuento cómo activar esta característica y cómo usarla.
Activar la característica en preview
Para poder usar GCR lo primero que debemos hacer es activar esta característica todavía en preview. Para ello, en el menú debes seleccionar la opción Feature Preview:
y habilitar la única característica que por ahora hay disponible llamada Improved container support.

Si estás trabajando con una organización en GitHub esta tarea se debe llevar a cabo a través de la siguiente ruta: https://github.com/organizations/NOMBRE_DE_LA_ORGANIZACION/settings/packages

Sin embargo, en este caso, cuando se habilita, nos ofrece tanto la opción de permitir imágenes privadas y públicas.

A partir de este momento ya podrás usar GitHub Container Registry.
Iniciar sesión en GitHub Container Registry
Al igual que hicimos para publicar una imagen en GitHub Packages, lo primero que necesitamos es iniciar sesión en este registro. Para ello es necesario crear un Personal Access Token en el apartado https://github.com/settings/tokens, con los mismos permisos.

Guarda el token en un archivo y ejecuta el siguiente comando para iniciar sesión con el cliente de Docker de tu máquina:
cat PAT.txt | docker login ghcr.io -u USERNAME --password-stdinEl resultado debería de ser Login Succeded. A partir de este momento ya estamos listos para publicar nuestras imágenes en GCR.
Nomenclatura para las imágenes
En este caso, la nomenclatura cambia respecto a GitHub Packages, ya que en esta se hacía alusión al repositorio donde se está publicando la imagen. En este caso, donde no se asocia a un repositorio en concreto, el nombre de la imagen debe seguir este formato:
ghcr.io/OWNER/IMAGE_NAME:VERSIONPor lo que siguiendo el mismo ejemplo que con GitHub Packages deberíamos etiquetarla de la siguiente manera:
docker tag hellodevops ghcr.io/0gis0/hello-devops:v1Publicar la imagen
Por último, publicamos la imagen como hicimos en el caso anterior, o en Docker hub y Azure Container Registry:
docker push ghcr.io/0gis0/hello-devops:v1Si todo ha ido bien esta se habrá publicado correctamente. Sin embargo, si anteriormente veíamos las imágenes en el apartado Packages del repositorio en cuestión ¿cómo localizo ahora aquellas que no dependen de un repositorio? Si recuerdas, en el artículo anterior te comenté que también era posible ver tus paquetes desde la ruta https://github.com/TU_USUARIO?tab=packages. Ahora que tienes habilitado GitHub Container Registry, y tu primera imagen publicada, verás estas también en el mismo apartado, pero sin un repositorio asociado.

Si quisiéramos que la misma fuera pública podemos seleccionarla en esa lista, hacer clic en el botón Package Settings:
y dentro de este apartado cambiar la visibilidad a través del botón Change visibility:
¡Saludos!
Si quieres seguir aprendiendo sobre contenedores, tienes una lista de vídeos en mi canal de YouTube 👇🏻
Docker CLI: Comandos esenciales que todo developer debe conocer
Domina los Dockerfiles: De lo básico a multi-stage
4 formas de crear un Dockerfile sin empezar desde cero
¿No entiendes las redes en Docker? Mira este vídeo
Cómo NO perder tus datos en Docker: Guía definitiva
Deja de configurar contenedores a mano: Aprende Docker Compose 🐙
Cómo subir tus imágenes a Docker Hub (Guía paso a paso)
Publica y automatiza tus imágenes de Docker con GitHub





¿Qué son los contenedores? Docker desde cero para principiantes
return(GiS); julio 10, 2024 10:00 am