Descripción general de Container Registry

Container Registry es un registro de imágenes de contenedor privado que se ejecuta en Google Cloud. Container Registry es compatible con Docker Image Manifest V2 y los formatos de imagen de OCI.

Muchas personas usan Dockerhub como un registro central para almacenar imágenes de Docker públicas. Sin embargo, para controlar el acceso a tus imágenes, necesitas usar un registro privado, como Container Registry.

Puede acceder a Container Registry a través de extremos HTTPS seguros, que le permiten enviar, extraer y administrar imágenes desde su hardware o desde cualquier sistema o instancia de VM. Además, puedes usar la herramienta de línea de comandos auxiliar de credenciales de Docker a fin de configurar Docker para que se autentique directamente con Container Registry.

Nombre del registro

Los registros de Container Registry reciben su nombre según el host y el ID del proyecto. Para trabajar con imágenes (por ejemplo, enviarlas, extraerlas, borrarlas), identifica la imagen con el siguiente formato:

[HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]
    

o

[HOSTNAME]/[PROJECT-ID]/[IMAGE]@[IMAGE_DIGEST]
    

donde:

  • [HOSTNAME] es la ubicación en que se almacena la imagen:

    • Actualmente, gcr.io aloja las imágenes en los Estados Unidos, pero la ubicación puede cambiar en el futuro.
    • us.gcr.io aloja la imagen en los Estados Unidos, en un depósito de almacenamiento independiente de las imágenes alojadas por gcr.io.
    • eu.gcr.io aloja las imágenes en la Unión Europea.
    • asia.gcr.io aloja las imágenes en Asia.

    Estas ubicaciones corresponden a las multirregiones de los depósitos de almacenamiento de Cloud Storage. Cuando envías una imagen a un registro con un nombre de host nuevo, Container Registry crea un depósito de almacenamiento en la multirregión especificada. Este depósito es el almacenamiento subyacente del registro. Dentro de un proyecto, todos los registros con el mismo nombre de host comparten un depósito de almacenamiento.

  • [PROJECT-ID] es el ID de tu proyecto de Google Cloud Console. Si el ID de tu proyecto contiene dos puntos (:), consulta Proyectos con alcance de dominio a continuación.

  • [IMAGE] es el nombre de la imagen. Puede ser diferente del nombre local de la imagen. En Google Cloud Console, los registros del proyecto se enumeran según el nombre de la imagen. Cada repositorio puede contener varias imágenes con el mismo nombre. Por ejemplo, puede contener versiones diferentes de una imagen llamada "quickstart-image".

  • La incorporación de :[TAG] o @[IMAGE_DIGEST] al final te permite distinguir una versión específica de la imagen, pero también es opcional. Si no especificas una etiqueta o el resumen, Container Registry busca la imagen con la etiqueta predeterminada latest. Consulta Versiones de imágenes dentro de un registro a continuación.

Por ejemplo, en la guía de inicio rápido, el registro de la imagen de la guía es gcr.io/[PROJECT-ID]. Para enviar y extraer la imagen, usa el siguiente formato:

gcr.io/[PROJECT-ID]/quickstart-image:tag1
    

donde [PROJECT-ID] es el ID del proyecto de Google Cloud Console.

Versiones de imágenes dentro de un registro

Un registro puede contener muchas imágenes, las cuales pueden tener diferentes versiones. Para identificar una versión específica de la imagen dentro de un registro, puedes especificar la etiqueta o el resumen de la imagen. Las etiquetas son exclusivas de una imagen dentro de un registro. Los resúmenes se generan automáticamente, son únicos para una versión de una imagen y tienen la forma @[IMAGE_DIGEST], en la que [IMAGE_DIGEST] es el valor de hash sha256 del contenido de la imagen.

Por ejemplo, en la guía de inicio rápido, para identificar una versión específica de la imagen, realiza lo siguiente:

  • agrega la etiqueta de la imagen:

    gcr.io/[PROJECT-ID]/quickstart-image:tag1
        
  • o agrega el resumen de la imagen:

    gcr.io/[PROJECT-ID]/quickstart-image@sha256:4d11e24ba8a615cc85a535daa17b47d3c0219f7eeb2b8208896704ad7f88ae2d
        

donde [PROJECT-ID] es el ID del proyecto de Google Cloud Console. Si el ID de tu proyecto contiene dos puntos (:), consulta Proyectos con alcance de dominio a continuación.

En la consola, en la columna Etiquetas de la pantalla Imágenes, se muestra una lista de las etiquetas de la imagen. Haz clic en la versión de la imagen para ver los metadatos, incluido el resumen de la imagen.

Consulta la información sobre cómo etiquetar imágenes para modificar las etiquetas.

Proyectos con alcance de dominio

Si tu proyecto tiene permisos para tu dominio, el ID del proyecto incluye el nombre del dominio seguido de dos puntos (:). Debido a la forma en que Docker trata los dos puntos, debes reemplazar el carácter de dos puntos con una barra diagonal cuando especifiques el resumen de una imagen en Container Registry. Identifica las imágenes en estos tipos de proyectos con el siguiente formato:

[HOSTNAME]/[DOMAIN]/[PROJECT]/[IMAGE]
    

Por ejemplo, el proyecto con ID example.com:my-project podría tener la siguiente imagen:

gcr.io/example.com/my-project/image-name
    

Nombres de registro como URL

La URL https://[HOSTNAME]/[PROJECT-ID]/[IMAGE] es una URL de ese registro en Cloud Console. Los usuarios autenticados que tengan permiso para acceder al registro pueden visitar estos vínculos. En la sección que aparece con anterioridad, encontrarás información sobre cómo crear el nombre de registro.

Por ejemplo, las siguientes URL vinculan a registros públicos en Cloud Console:

Formatos de imagen del contenedor

Container Registry es compatible con Docker Image Manifest V2 y los formatos de imagen de OCI.

Para obtener más información, consulta Formatos de imágenes de contenedor.

Control de acceso

Container Registry almacena sus etiquetas y archivos de capas para imágenes de contenedores en un depósito de Cloud Storage en el mismo proyecto que el registro. El acceso al depósito se establece con la configuración de la administración de identidades y accesos (IAM) de Cloud Storage.

De forma predeterminada, los Propietarios y Editores del proyecto tienen permiso para enviar y extraer en el depósito de Container Registry de ese proyecto. Los Visualizadores del proyecto solo tienen permiso para extraer.

Para obtener más información, consulta Configurar el control de acceso.

Consulta los avisos de baja de Container Registry a fin de obtener información sobre los planes para mover los metadatos de las imágenes fuera de Cloud Storage a una base de datos de backend de alto rendimiento.

Autenticación

Para poder enviar o extraer imágenes, debes configurar la autenticación. Puedes configurar Docker para que use la herramienta de línea de comandos de gcloud a fin de autenticar las solicitudes a Container Registry. Container Registry también admite métodos de autenticación avanzada mediante el uso de tokens de acceso o archivos de claves JSON.

Auxiliar de credenciales de Docker

Docker necesita acceso a Container Registry para enviar y extraer imágenes. Puedes usar la herramienta de línea de comandos del auxiliar de credenciales de Docker para configurar tus credenciales de Container Registry y usarlas con Docker.

El auxiliar de credenciales recupera tus credenciales de Container Registry, ya sea automáticamente o desde una ubicación especificada mediante la marca --token-source. Luego, las escribe en el archivo de configuración de Docker. De esta manera, puedes usar la herramienta de línea de comandos de Docker, docker, para interactuar directamente con Container Registry.

Para obtener más información, consulta Autenticación avanzada.

Cuenta de servicio de Container Registry

Cuando habilitas la API de Container Registry, Container Registry agrega una cuenta de servicio a tu proyecto. Esta cuenta de servicio tiene el siguiente nombre:

service-[PROJECT_NUMBER]@containerregistry.iam.gserviceaccount.com
    

Esta cuenta de servicio de Container Registry está diseñada específicamente para que Container Registry realice sus tareas de servicio en tu proyecto. Google es el propietario de esta cuenta, pero es específica para tu proyecto y está incluida en las secciones de IAM y Cuentas de servicio de Cloud Console.

Si borras esta cuenta de servicio o cambias sus permisos, algunas características de Container Registry no funcionarán correctamente. No debes modificar las funciones ni borrar la cuenta.

Duplicación

El registro mirror.gcr.io es una duplicación de Container Registry global para los repositorios oficiales de Docker Hub.

El uso de la duplicación puede acelerar las extracciones para los repositorios de Docker Hub. Cuando usas mirror.gcr.io, tu cliente primero intenta extraer imágenes oficiales de Docker Hub desde la duplicación de Container Registry.

Para obtener más información, consulta la información sobre cómo usar Container Registry y la duplicación de Docker Hub.

Notificaciones

Puedes usar Pub/Sub para recibir notificaciones sobre los cambios en tus imágenes de contenedor.

Para obtener más información, consulta Configurar notificaciones de Pub/Sub.

Usa Container Registry con Google Cloud

Las instancias de Compute Engine y los clústeres de Google Kubernetes Engine pueden enviar y extraer imágenes de Container Registry en función de los permisos de Cloud Storage en las instancias. Consulta cómo usar Container Registry con Google Cloud.

Las imágenes almacenadas en Container Registry se pueden implementar en el entorno flexible de App Engine.

Integraciones en herramientas de entrega continua

Container Registry funciona con varios sistemas de entrega continua populares.

Usa Container Registry con soluciones de terceros

Cuando desarrollas tus aplicaciones, es posible que desees usar administración de clústeres, integración continua, o bien otras soluciones de terceros que están fuera de Google Cloud. Container Registry se puede integrar en estos servicios externos.

Es posible que estas soluciones no brinden acceso a la herramienta de línea de comandos de gcloud para la autenticación. En esos casos, puedes usar docker login para autenticar directamente con Container Registry. Para obtener más información, consulta Autenticación avanzada.

Algunas soluciones de terceros, como Kubernetes, proporcionan documentación para la integración con Container Registry.

Para obtener una lista completa de las soluciones de terceros que se integran con Container Registry, consulta Integraciones de la herramienta de entrega continua.