Trabajar con el registro de contenedores

Puedes almacenar y administrar DOcker y las imágenes de OCI en el Registro de contenedores, el cual utiliza el espacio de nombre para paquetes https://ghcr.io.

el Registro del paquete de GitHub se encuentra disponible con GitHub Free, GitHub Pro, GitHub Free para organizaciones, GitHub Team, Nube de GitHub Enterprise, GitHub Enterprise Server, y GitHub AE.


Registro del paquete de GitHub no está disponible para repositorios privados que pertenezcan a cuentas que utilicen planes tradicionales por repositorio. Las cuentas que utilicen los planes tradicionales por repositorio tampoco podrán acceder al Registro de contenedores ya que estas cuentas se facturan por repositorio. Para obtener más información, consulta la sección "[Productos de GitHub](/articles/github-s-products)".

Acerca del soporte para el Registro de contenedores

El Registro de contenedores es actualmente compatible con los siguientes formatos de contenedores de imagen:

Cuando instalas o publicas una imagen de Docker, el Registro de contenedores es compatible con capas externas, tales como imágenes de Windows.

Autenticarse en el Registro de contenedores

Para autenticarse en el Registro de contenedores dentro de un flujo de trabajo de GitHub Actions, utiliza el GITHUB_TOKEN para tener la mejor experiencia en seguridad. Si tu flujo de trabajo está utilizando un token de acceso personal (PAT) para autenticarse en ghcr.io, entonces te recomendamos ampliamente que actualices tu flujo de trabajo para utilizar el GITHUB_TOKEN.

Para obtener orientación sobre cómo actualizar tus flujos de trabajo que se autentican en ghcr.io con un token de acceso personal, consulta la sección "Mejorar un flujo de trabajo que acceda a ghcr.io".

Para obtener más información sobre el GITHUB_TOKEN, consulta la sección "Autenticación en un flujo de trabajo".

Si estás utilizando el Registro de contenedores en las acciones, sigue nuestras mejores prácticas de seguridad en "Fortalecimiento de seguridad para las Acciones de GitHub".

  1. Crea un token de acceso personal nuevo (PAT) con los alcances adecuados para las tareas que quieres realizar. Si tu organización requiere SSO, debes hablitarlo para tu token nuevo.

    Nota: Predeterminadamente, cuando seleccionas el alcance write:packages para tu token de acceso personal (PAT) en la interface de usuario, también se seleccionará el alcance repo. El alcance repo ofrece un acceso amplio e innecesario, el cual te recomendamos no utilices para los flujos de trabajo de GitHub Actions en particualr. Para obtener más información, consulta la sección "Fortalecimiento de la seguridad para las GitHub Actions". Como medida alterna, puedes seleccionar solo el alcance de write:packages para tu PAT en la interface de usuario con esta url: https://github.com/settings/tokens/new?scopes=write:packages.

    • Selecciona el alcance read:packages para descargar imágenes de contenedor y leer sus metadatos.
    • Selecciona el alcance write:packages para descargar y cargar imágenes de contenedor y leer y escribir sus metadatos.
    • Selecciona el alcance delete:packages para borrar las imágenes de contenedor.

    Para obtener más información, consulta la sección "Crear un token de acceso personal para la línea de comandos".

  2. Guarda tu PAT. Te recomendamos guardar tu PAT como una variable de ambiente.

    $ export CR_PAT=YOUR_TOKEN
  3. Utilizando el CLI para tu tipo de contenedor, ingresa en el servicio del Registro de contenedores en ghcr.io.

    $ echo $CR_PAT | docker login ghcr.io -u USERNAME --password-stdin
      > Login Succeeded

Subir imágenes de contenedor

Este ejemplo sube la última versión de IMAGE-NAME.

$ docker push ghcr.io/OWNER/IMAGE_NAME:latest

Este ejemplo sube la versión 2.5 de la imagen.

$ docker push ghcr.io/OWNER/IMAGE-NAME:2.5

Cuando publicas un paquete por primera vez, la visibilidad predeterminada es privada. Para cambiar la visibilidad o configurar permisos de acceso, consulta la sección "Configurar la visibilidad y el control de accesos de un paquete".

Extraer imágenes de contenedor

Extraer por resúmen

Para garantizar que siempre utilices la misma imagen, puedes especificar la versión exacta de la imagen de contenedor que quieres extraer de acuerdo con su valor de SHA de digest.

  1. Para encontrar el valor de SHA de resúmen, utiliza docker inspect o docker pull y copia el valor de SHA después de Digest:

    $ docker inspect ghcr.io/OWNER/IMAGE_NAME
  2. Elimina la imagen localmente de acuerdo a tus necesidades.

    $ docker rmi  ghcr.io/OWNER/IMAGE_NAME:latest
  3. Extrae la imagen de contenedor con @YOUR_SHA_VALUE después del nombre de dicha imagen.

    $ docker pull ghcr.io/OWNER/IMAGE_NAME@sha256:82jf9a84u29hiasldj289498uhois8498hjs29hkuhs

Extraer por nombre

$ docker pull ghcr.io/OWNER/IMAGE_NAME

Extraer por nombre y versión

Ejemplo de CLI de Docker que muestra una imagen que se extrae por su nombre y por la etiqueta de la versión 1.14.1:

$ docker pull ghcr.io/OWNER/IMAGE_NAME:1.14.1
  > 5e35bd43cf78: Pull complete
  > 0c48c2209aab: Pull complete
  > fd45dd1aad5a: Pull complete
  > db6eb50c2d36: Pull complete
  > Digest: sha256:ae3b135f133155b3824d8b1f62959ff8a72e9cf9e884d88db7895d8544010d8e
  > Status: Downloaded newer image for ghcr.io/orgname/image-name/release:1.14.1
  > ghcr.io/orgname/image-name/release:1.14.1

Extraer por nombre y última versión

$ docker pull ghcr.io/OWNER/IMAGE_NAME:latest
  > latest: Pulling from user/image-name
  > Digest: sha256:b3d3e366b55f9a54599220198b3db5da8f53592acbbb7dc7e4e9878762fc5344
  > Status: Downloaded newer image for ghcr.io/user/image-name:latest
  > ghcr.io/user/image-name:latest

Crear imagenes de contenedor

Este ejemplo crea la imagen hello_docker:

$ docker build -t hello_docker .

Etiquetar las imágenes de contenedor

  1. Encuentra la ID para la imagen de Docker que quieres etiquetar.

    $ docker images
    > REPOSITORY                                            TAG                 IMAGE ID            CREATED             SIZE
    > ghcr.io/my-org/hello_docker         latest              38f737a91f39        47 hours ago        91.7MB
    > ghcr.io/my-username/hello_docker    latest              38f737a91f39        47 hours ago        91.7MB
    > hello-world                                           latest              fce289e99eb9        16 months ago       1.84kB
  2. Etiqueta tu imagen de Docker utilizando la ID ed imagen y el nombre que quieras poner a la misma, así como el destino en donde se hospedará ésta.

    $ docker tag 38f737a91f39 ghcr.io/OWNER/NEW_IMAGE_NAME:latest

¿Te ayudó este documento?

Política de privacidad

¡Ayúdanos a hacer geniales estos documentos!

Todos los documentos de GitHub son de código abierto. ¿Notas algo que esté mal o que no sea claro? Emite una solicitud de cambios.

Haz una contribución

O, aprende cómo contribuir.