Integrar Docker Scout con Artifactory Container Registry
Integrar Docker Scout con JFrog Artifactory te permite indexar y analizar
imágenes de Artifactory. Esta integración funciona a través de un proceso de larga
ejecución docker scout watch. Descarga imágenes de los repositorios seleccionados
(opcionalmente filtrados), puede recibir devoluciones de llamada de webhook (callbacks) de Artifactory
y envía datos de la imagen a Docker Scout. Puedes ver los resultados en el Docker Scout Dashboard o
con la CLI de docker scout.
Cómo funciona
Ejecutas
docker scout watch en un host que
controlas y configuras la cadena de registro específica de Artifactory a través de --registry "key=value,...". El proceso de observación (watch) puede:
- Observar repositorios específicos o un registro completo
- Opcionalmente ingestar todas las imágenes existentes una sola vez
- Actualizar periódicamente las listas de repositorios
- Recibir devoluciones de llamada de webhook de Artifactory en el puerto local que elijas
Después de la integración, Docker Scout descarga y analiza automáticamente las imágenes que envíes al registro de Artifactory. Los metadatos de tus imágenes se almacenan en la plataforma de Docker Scout, pero Docker Scout no almacena las imágenes de contenedor en sí. Para obtener más información sobre cómo maneja Docker Scout los datos de las imágenes, consulta Data handling.
Opciones de la cadena de registro específicas de Artifactory
Estas opciones type=artifactory anulan el comportamiento genérico del registro para la opción --registry:
| Clave | Requerido | Descripción |
|---|---|---|
type | Sí | Debe ser artifactory. |
registry | Sí | Nombre de host del registro de Docker/OCI (por ejemplo, example.jfrog.io). |
api | Sí | URL base de la API REST de Artifactory (por ejemplo, https://example.jfrog.io/artifactory). |
repository | Sí | Repositorio a observar (reemplaza a --repository). |
includes | No | Globs a incluir (por ejemplo, */frontend*). |
excludes | No | Globs a excluir (por ejemplo, */legacy/*). |
port | No | Puerto local para escuchar las devoluciones de llamada del webhook. |
subdomain-mode | No | true o false; coincide con el diseño de Docker de Artifactory (subdominio frente a ruta del repositorio). |
Integrar un registro de Artifactory
Usa los siguientes pasos para integrar tu registro de Artifactory con Docker Scout.
Elige el host en el que ejecutarás
docker scout watch.El host debe tener acceso local o de red a tu registro privado y poder acceder a la API de Scout (
https://api.scout.docker.com) a través de internet. Si estás utilizando devoluciones de llamada de webhook, Artifactory también debe poder comunicarse con el host del cliente de Scout en el puerto configurado. Invalida la opción--workers(por defecto:3) para un rendimiento óptimo en función del tamaño del host y de la carga de trabajo prevista.Asegúrate de estar ejecutando la última versión de Scout.
Comprueba tu versión actual:
$ docker scout versionSi es necesario, instala la última versión de Scout.
Configura tus credenciales de Artifactory.
Almacena las credenciales que usará el cliente de Scout para autenticarse con Artifactory. El siguiente es un ejemplo que utiliza variables de entorno. Reemplaza
<user>y<password-or-access-token>con tus valores reales.$ export DOCKER_SCOUT_ARTIFACTORY_API_USER=<user> $ export DOCKER_SCOUT_ARTIFACTORY_API_PASSWORD=<password-or-access-token>TipComo buena práctica, crea un usuario dedicado con acceso de solo lectura y utiliza un token de acceso en lugar de una contraseña.
Almacena la credencial que usará Artifactory para autenticar las devoluciones de llamada de webhook. El siguiente es un ejemplo que utiliza una variable de entorno. Reemplaza
<random-64-128-character-secret>con un secreto real.$ export DOCKER_SCOUT_ARTIFACTORY_WEBHOOK_SECRET=<random-64-128-character-secret>TipComo buena práctica, genera una cadena aleatoria de alta entropía de 64 a 128 caracteres.
Configura tus credenciales de Scout.
Genera un token de acceso de organización para acceder a Scout. Para obtener más detalles, consulta Create an organization access token.
Inicia sesión en Docker usando el token de acceso de organización.
$ docker login --username <your_organization_name>Cuando se te solicite una contraseña, pega el token de acceso de organización que generaste.
Conecta tu entorno local de Docker al servicio de Docker Scout de tu organización.
$ docker scout enroll <your_organization_name>
Indexa las imágenes existentes. Solo necesitas hacer esto una vez.
Ejecuta
docker scout watchcon la opción--all-imagespara indexar todas las imágenes en el repositorio de Artifactory especificado. El siguiente es un comando de ejemplo:$ docker scout watch --registry \ "type=artifactory,registry=example.jfrog.io,api=https://example.jfrog.io/artifactory,include=*/frontend*,exclude=*/dta/*,repository=docker-local,port=9000,subdomain-mode=true" \ --all-imagesConfirma que las imágenes se hayan indexado visualizándolas en el Scout Dashboard.
Configura las devoluciones de llamada de Artifactory.
En la interfaz de usuario de Artifactory o a través de la API REST, configura webhooks para eventos de envío/actualización de imágenes. Establece el punto de enlace (endpoint) en el host y puerto de tu
docker scout watche incluye la variableDOCKER_SCOUT_ARTIFACTORY_WEBHOOK_SECRETpara la autenticación.Para obtener más información, consulta la documentación de Webhooks de JFrog Artifactory o la documentación de la API REST de Webhooks de JFrog Artifactory.
Observa continuamente si hay imágenes nuevas o actualizadas.
Ejecuta
docker scout watchcon la opción--refresh-registrypara buscar nuevas imágenes a indexar.El comando
docker scout watches un proceso de larga ejecución que debe continuar ejecutándose indefinidamente en segundo plano para recibir webhooks y buscar nuevas imágenes. Si lo ejecutas directamente en una terminal y cierras la sesión, el proceso se detendrá.The following is an example command. Puedes ejecutar el proceso como un servicio del sistema, por ejemplo, usando
systemdonohup, para asegurarte de que continúe ejecutándose en segundo plano.$ docker scout watch --registry \ "type=artifactory,registry=example.jfrog.io,api=https://example.jfrog.io/artifactory,include=*/frontend*,exclude=*/dta/*,repository=docker-local,port=9000,subdomain-mode=true" \ --refresh-registryOpcional. Configura la integración de Scout para recibir notificaciones en tiempo real desde plataformas de colaboración populares. Para más detalles, consulta Integrar Docker Scout con Slack.