En este documento, se presentan conceptos clave relacionados con las imágenes de contenedor, incluidos los registros, los repositorios y los artefactos. También se incluye información básica sobre cómo se aplican estos conceptos a Artifact Registry y Container Registry.
Los ejemplos de Artifact Registry en esta página se refieren principalmente a los repositorios con formato de Docker y gcr.io. Para obtener más información, consulta
Formatos admitidos y la
Descripción general del repositorio.
Registros
Un registro almacena y distribuye imágenes de contenedor y artefactos organizados por nombre dentro de repositorios. Un registro puede contener un solo repositorio o varios, y puede ser público o privado.
Los servicios de registro, como Docker Hub y Artifact Registry, proporcionan opciones para crear repositorios públicos o privados. Cuando se extraen imágenes públicas, es importante comprender los posibles problemas de seguridad. Lee sobre la administración de dependencias para obtener más información sobre la supervisión de vulnerabilidades y la reducción de tu huella de dependencias.
Los registros se organizan en repositorios que almacenan imágenes de contenedor individuales. Artifact Registry te permite crear varios repositorios en un solo proyecto y asociar una ubicación regional o multirregional específica con cada repositorio. Los repositorios relacionados se pueden agrupar por etiquetas.Repositorios de Artifact Registry y administración de imágenes
En los repositorios con formato de Docker de Artifact Registry, puedes almacenar varias imágenes de contenedor con diferentes nombres en el mismo repositorio. Cada versión de una imagen se identifica con su resumen de imagen y se puede asociar con una etiqueta. Las etiquetas pueden ser mutables o inmutables. Para obtener más información sobre las versiones y las etiquetas de las imágenes de contenedor, consulta Versiones de imágenes de contenedor.
Por lo general, Artifact Registry hace referencia a partes de la ruta de acceso a una imagen para identificar el proyecto, la ubicación regional o multirregional, y el nombre de la imagen junto con la etiqueta o el resumen del manifiesto para identificar la versión correcta.Por ejemplo:
docker push us-west1-docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image:tag1
us-west1es la ubicación del repositorio.docker.pkg.deves el nombre de host de los repositorios con formato de Docker.PROJECTes el espacio de nombres creado por tu Google Cloud ID del proyecto.quickstart-docker-repoes el espacio de nombres de tu proyecto en el que almacenas imágenes. En Artifact Registry, esta parte de la ruta de acceso se denomina repositorio.quickstart-imagees el nombre de todas las versiones dequickstart-imagey, a menudo, se conoce como la imagen.tag1es la etiqueta que especifica la versión de la imagen.
Imágenes
Tanto los artefactos como las imágenes se pueden almacenar en Artifact Registry. Un artefacto puede ser cualquier cosa: un archivo de texto, una imagen de Docker o un gráfico de Helm, mientras que una imagen suele hacer referencia a una imagen de contenedor. Las imágenes de contenedor son paquetes de software que contienen todos los elementos necesarios para ejecutarse en cualquier entorno. Lee ¿Qué son los contenedores? para obtener más información.
Las imágenes se envían o se suben a los repositorios y se extraen o se descargan de ellos. Para especificar la imagen y la versión correctas, se debe especificar el registro y el artefacto únicos.
Para obtener más información sobre los nombres de repositorios y de imágenes en Artifact Registry, consulta Nombres de repositorios y de imágenes.
Capas
Las imágenes de contenedor almacenadas en repositorios se construyen de forma incremental con capas. Las diferentes imágenes pueden usar algunas de las mismas capas. Las capas se definen de diferentes maneras según el tipo de imagen. Por ejemplo, cada instrucción en un Dockerfile corresponde a una capa en la imagen de Docker. Dentro de un registro, las imágenes con capas comunes comparten esas capas, lo que aumenta la eficiencia del almacenamiento. Por motivos de seguridad, las capas no se comparten en diferentes registros.
Cuando borras una imagen de contenedor, las capas no se borran de inmediato. Las capas a las que no hacen referencia las imágenes del registro se borran todos los días.
Etiquetas
Los usuarios agregan etiquetas cuando envían o extraen una imagen a un repositorio para especificar la versión de una imagen. Una imagen puede tener una o varias etiquetas, o ninguna. Si usas etiquetas mutables y envías una imagen dos veces con la misma etiqueta, la etiqueta se quita de la primera imagen y se mueve a la segunda, lo que deja la primera imagen sin etiqueta. Aún se puede acceder a la imagen sin etiqueta con sus resúmenes de manifiesto.
Si usas etiquetas inmutables, no se permiten las siguientes acciones:
- Borrar una imagen etiquetada (aún se permite borrar imágenes sin etiqueta)
- Quitar una etiqueta de una imagen
- Enviar una imagen con una etiqueta que ya usa otra versión de la imagen en el repositorio
La etiqueta latest es una etiqueta especial que se agrega cuando se envían imágenes sin etiqueta.
Por ejemplo:
docker push us-west1-docker.pkg.dev/my-project/my-repo/hello-app
envía la imagen a hello-app:latest.
docker pull us-west1-docker.pkg.dev/my-project/my-repo/hello-app
extrae la imagen hello-app:latest.
Es importante tener en cuenta que, cuando se envía una imagen a un repositorio con una etiqueta que no sea latest, no se agrega la etiqueta latest, por lo que es posible que la imagen latest esté detrás de los cambios más recientes. Recomendamos usar etiquetas que no sean latest para las versiones.
Manifiestos
Los manifiestos de imágenes identifican y especifican de forma única las capas dentro de cada imagen. Los manifiestos se identifican con hashes SHA-256 únicos llamados resúmenes de manifiesto. Los resúmenes de manifiesto son más confiables y seguros que las etiquetas porque, en los repositorios con etiquetas mutables, se pueden enviar varias versiones de la misma imagen a la misma etiqueta, lo que deja algunas imágenes sin etiquetas, mientras que cada imagen se especifica de forma única con su resumen de manifiesto.
Si usas herramientas para leer o analizar imágenes, sus resultados solo serán válidos para la imagen que se leyó. Para asegurarte de implementar la imagen que se leyó, no puedes confiar en la etiqueta porque es posible que la imagen a la que se refiera haya cambiado.
Para obtener más información sobre el etiquetado y los manifiestos específicos de Artifact Registry, consulta Administra imágenes y Usa imágenes de contenedor.
Precalentamiento de imágenes
En el caso de las aplicaciones sensibles a la latencia que usan la transmisión de imágenes, esperar a que se extraiga una imagen por primera vez en un nodo o instancia nuevos, a menudo llamado “inicio en frío”, puede generar demoras no deseadas. El precalentamiento te permite iniciar de forma explícita la descarga de imágenes en la caché de transmisión de imágenes antes de que se soliciten. Este proceso ayuda a garantizar que tu imagen esté disponible para una entrega rápida cuando la solicite tu clúster de GKE.
Para precalentar imágenes, usa la API de Artifact Registry. Para obtener instrucciones, consulta Reduce la latencia con el precalentamiento de imágenes.
¿Qué sigue?
- Guía de inicio rápido de Docker
- Trabajar con imágenes de contenedor
- Guía de inicio rápido de Helm
- Trabaja con los gráficos de Helm
- Lee sobre DevOps y explora el programa de investigación de DORA.