Compartir a través de


Administración del contenido público con Azure Container Registry

En este artículo se proporciona información general sobre los procedimientos y flujos de trabajo para usar un registro local, como un registro de contenedor de Azure para mantener copias del contenido público, incluidas las imágenes de contenedor en Docker Hub.

Riesgos con el contenido público

Tu entorno podría depender de contenido público, como imágenes de contenedor públicas, Helm charts, políticas de Open Policy Agent (OPA) u otros artefactos. Por ejemplo, podría ejecutar nginx para el enrutamiento de servicio o docker build FROM alpine mediante la extracción de imágenes directamente de Docker Hub u otro registro público.

Sin los controles adecuados, el hecho de tener dependencias del contenido del registro público puede introducir riesgos en los flujos de trabajo de desarrollo e implementación de imágenes. Para mitigar estos riesgos, mantenga copias locales del contenido público siempre que sea posible. Para más información, consulte el blog de Open Container Iniciative.

Autenticación con Docker Hub

Si actualmente extrae imágenes públicas de Docker Hub como parte de un flujo de trabajo de compilación o implementación, se recomienda autenticarse mediante una cuenta de Docker Hub en lugar de realizar una solicitud de incorporación de cambios anónima.

Al realizar solicitudes de incorporación de cambios anónimas frecuentes, es posible que vea errores de Docker similares a ERROR: toomanyrequests: Too Many Requests. o You have reached your pull rate limit.. Autentíquese en Docker Hub para evitar estos errores.

Nota:

Los límites de velocidad de descarga se aplican a solicitudes anónimas y autenticadas a Docker Hub desde cuentas de plan gratis de Docker. Estos límites se aplican mediante la dirección IP y el identificador de Docker, respectivamente.

Para calcular el número de solicitudes de incorporación de cambios, tenga en cuenta que al usar servicios de proveedor de nube o trabajar detrás de una NAT corporativa, varios usuarios aparecen en Docker Hub como un subconjunto de direcciones IP. Al agregar la autenticación de cuenta de pago de Docker a las solicitudes realizadas a Docker Hub, puede evitar posibles interrupciones del servicio causadas por la limitación del límite de velocidad.

Para más información, consulte Precios y suscripciones de Docker y Términos de servicio de Docker.

Token de acceso de Docker Hub

Al autenticarse en Docker Hub, este admite tokens de acceso personal como alternativa a las contraseñas de Docker. Se recomienda el uso de tokens para los servicios automatizados que extraen imágenes de Docker Hub. Puede generar varios tokens para distintos usuarios o servicios, así como revocar los tokens cuando ya no los necesite.

Para autenticarse con docker login mediante un token, omita la contraseña en la línea de comandos. Cuando se le solicite una contraseña, escriba el token en su lugar. Si habilitó la autenticación en dos fases para la cuenta de Docker Hub, debe usar un token de acceso personal al iniciar sesión desde la CLI de Docker.

Autenticación desde servicios de Azure

Varios servicios de Azure, incluidos App Service y Azure Container Instances, admiten la extracción de imágenes de registros públicos, como Docker Hub para implementaciones de contenedores. Si necesita implementar una imagen de Docker Hub, se recomienda que configure las opciones para autenticarse con una cuenta de Docker Hub. Ejemplos:

App Service

  • Origen de imagen: Docker Hub
  • Acceso al repositorio: Privado
  • Inicio de sesión: <nombre de usuario de Docker Hub>
  • Contraseña: <token de Docker Hub>

Para más información, consulte Extracciones autenticadas de Docker Hub en App Service.

Azure Container Instances

  • Origen de imagen: Docker Hub u otro registro
  • Tipo de imagen: Privada
  • Servidor de inicio de sesión del registro de imágenes: docker.io
  • Nombre de usuario del registro de imágenes: <nombre de usuario de Docker Hub>
  • Contraseña del registro de imágenes: <token de Docker Hub>
  • Imagen: docker.io/<nombre de repositorio>:<etiqueta>

Configuración de Caché de artefacto para consumir contenido público

El procedimiento recomendado para consumir contenido público es combinar la autenticación del registro y la característica de Caché de artefacto. Utiliza Artifact Cache para almacenar en caché tus artefactos de contenedor en tu Azure Container Registry incluso en redes privadas. El uso de Artifact Cache no solo le protege de los límites de velocidad del registro, sino que también aumenta drásticamente la confiabilidad de extracción cuando se combina con ACR replicado geográficamente para extraer artefactos de la región más cercana al recurso de Azure. Además, puede usar todas las características de seguridad que ofrece ACR, incluidas las redes privadas, la configuración del firewall, las entidades de servicio, etc. Para obtener información completa sobre el uso del contenido público con la caché de artefactos de ACR, consulte el tutorial Caché de artefactos.

Importación de imágenes en una instancia de Azure Container Registry

Para administrar copias de imágenes públicas, cree un registro de contenedor de Azure si aún no tiene una. Use la CLI de Azure, Azure Portal, Azure PowerShell u otras herramientas para crear un registro.

Como paso único recomendado, importe imágenes base y otro contenido público en la instancia de Azure Container Registry. El comando az acr import de la CLI de Azure admite la importación de imágenes desde registros públicos, como Docker Hub y Microsoft Container Registry, y desde registros de contenedor privados.

az acr import no requiere una instalación local de Docker. Puede ejecutarlo con una instalación local de la CLI de Azure o directamente en Azure Cloud Shell. Admite imágenes de cualquier tipo de sistema operativo, imágenes de varias arquitecturas o artefactos OCI, como los gráficos Helm.

En función de las necesidades de su organización, puede realizar la importación en un registro dedicado o en un repositorio de un registro compartido.

az acr import \
  --name myregistry \
  --source docker.io/library/hello-world:latest \
  --image hello-world:latest \
  --username <Docker Hub username> \
  --password <Docker Hub token>

Actualización de referencias de imágenes

Los desarrolladores de imágenes de aplicación deben asegurarse de que el código haga referencia al contenido local bajo su control.

  • Actualice las referencias de las imágenes para que usen el registro privado. Por ejemplo, actualice una FROM baseimage:v1 instrucción en un Dockerfile a FROM myregistry.azurecr.io/mybaseimage:v1 para un registro que no sea DNL o FROM myregistry-abc123.azurecr.io/mybaseimage:v1 para un registro habilitado para DNL. Para obtener más información sobre las opciones de DNL durante la creación del registro y las implicaciones del nombre DNS, consulte Inicio rápido: Creación de un registro en el portal.
  • Configure las credenciales o un mecanismo de autenticación para usar el registro privado. El mecanismo exacto depende de las herramientas que use para acceder al registro y de cómo administre el acceso de los usuarios.

Automatización de las actualizaciones de imágenes de aplicación

Para automatizar las compilaciones de imágenes de aplicación cuando se actualizan las imágenes base, configure una tarea de Azure Container Registry. Este enfoque se expande en la importación de imágenes. Una tarea de compilación automatizada puede realizar un seguimiento de las actualizaciones de la imagen base y las actualizaciones del código fuente.

Para ver un ejemplo detallado, consulte Consumo y mantenimiento de contenido público con Azure Container Registry Tasks.

Nota:

Una sola tarea preconfigurada puede recompilar automáticamente cada imagen de aplicación que haga referencia a una imagen base dependiente.

Pasos siguientes