Skip to main content

Trabajar con el registro de contenedores

Puedes almacenar y administrar imágenes de Docker y de OCI en el Registro de contenedores, el cual utiliza el designador de nombre de paquete https://containers.HOSTNAME.

Nota:: Registro de contenedores se encuentra actualmente en beta para GitHub Enterprise Server y está sujeto a cambios.

Both Registro del paquete de GitHub and subdomain isolation must be enabled to use Registro de contenedores. Para obtener más información, consulta la sección "Trabajar con el registro de contenedores."

Acerca de Registro de contenedores

The Registro de contenedores stores container images within your organization or personal account, and allows you to associate an image with a repository. You can choose whether to inherit permissions from a repository, or set granular permissions independently of a repository. You can also access public container images anonymously.

Para utilizar el Registro de contenedores en GitHub Enterprise Server, tu administrador de sitio primero debe configurar el Registro del paquete de GitHub para tu instancia y habilitar el aislamiento de subdominios. Para obtener más información, consulta las secciones "Iniciar con GitHub Packages para tu empresa" y "Habilitar el aislamiento de subdominios".

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 utiliza un token de acceso personal (PAT) para autenticarse en containers.HOSTNAME, entonces te recomendamos ampliamente que lo actualices para que utilice el GITHUB_TOKEN.

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".

Asegúrate de reemplazar a HOSTNAME con el nombre de host o dirección IP de tu instancia de servidor de GitHub Enterprise en los siguientes ejemplos.

  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 solución alterna, puedes seleccionar solo el alcance de write:packages para tu PAT en la interfaz de usuario con esta url: https://HOSTNAME/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 containers.HOSTNAME.

    $ echo $CR_PAT | docker login containers.HOSTNAME -u USERNAME --password-stdin
      > Login Succeeded

Subir imágenes de contenedor

Este ejemplo sube la última versión de IMAGE_NAME.

$ docker push containers.HOSTNAME/OWNER/IMAGE_NAME:latest

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

$ docker push containers.HOSTNAME/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 containers.HOSTNAME/OWNER/IMAGE_NAME
  2. Elimina la imagen localmente de acuerdo a tus necesidades.

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

    $ docker pull containers.HOSTNAME/OWNER/IMAGE_NAME@sha256:82jf9a84u29hiasldj289498uhois8498hjs29hkuhs

Extraer por nombre

$ docker pull containers.HOSTNAME/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 containers.HOSTNAME/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 containers.HOSTNAME/orgname/image-name/release:1.14.1
  > containers.HOSTNAME/orgname/image-name/release:1.14.1

Extraer por nombre y última versión

$ docker pull containers.HOSTNAME/OWNER/IMAGE_NAME:latest
  > latest: Pulling from user/image-name
  > Digest: sha256:b3d3e366b55f9a54599220198b3db5da8f53592acbbb7dc7e4e9878762fc5344
  > Status: Downloaded newer image for containers.HOSTNAME/user/image-name:latest
  > containers.HOSTNAME/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
    > containers.HOSTNAME/my-org/hello_docker         latest              38f737a91f39        47 hours ago        91.7MB
    > containers.HOSTNAME/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 containers.HOSTNAME/OWNER/NEW_IMAGE_NAME:latest