Running CVE scans with multiple instances of docker scout CLI simultaneously results in cache errors in v1.19.0

Abierto
#210 3 comentarios 1 reacción 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
52/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Tranquilo
Stack tecnológico
docker, shell
Área
cli, security

Línea de trabajo

Comienza con la reproducción de Bash proporcionada y el punto de entrada docker scout cves, comparando los escaneos concurrentes en v1.19.0 con v1.18.4. Investiga cómo se gestiona DOCKER_SCOUT_CACHE_DIR durante la indexación del archivo; se considera terminado cuando los escaneos concurrentes se completan correctamente sin errores de tiempo de espera de la caché, incluso cuando cada proceso utiliza un directorio de caché independiente.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

When running cve scans for images' archives with multiple instances of docker scout CLI v1.19.0 in the same time, some runs fail with the following error:

ERROR   failed to index image: failed to initialize cache: cache may be in use by another process: timeout

This happen even when using different cache dirs for different processes (cache isolation issue?)

NOTE: This error does not happen when using docker scout CLI v1.18.4

Script to reproduce:

#!/usr/bin/env bash

# Provide path to docker scout binary as the first argument for this script
docker_scout=$1

# Create a temporary Docker config just for this test and put the plugin there.
# This is just to simply test arbitrary versions of Docker Scout without affecting actual installation
DOCKER_CONFIG="$(mktemp -d)"
trap 'rm -rf "$DOCKER_CONFIG"' EXIT
export DOCKER_CONFIG
# Copy the user's docker config as well for login details.
cp $HOME/.docker/config.json $DOCKER_CONFIG/config.json
mkdir -p "$DOCKER_CONFIG/cli-plugins"
cp "$docker_scout" "$DOCKER_CONFIG/cli-plugins/docker-scout"
chmod +x "$DOCKER_CONFIG/cli-plugins/docker-scout"

# Some popular images from Dockerhub as an example
docker pull traefik:latest
docker pull postgres:latest
docker save traefik > traefik.tar
docker save postgres > postgres.tar

docker scout version

# We are running scans for the same images in a loop here, but the error also occurs when running scans for different images every time
for try in {1..5} ; do
  cache1="$(mktemp -d)/scout_cache"
  echo "Using cache $cache1"
  DOCKER_SCOUT_CACHE_DIR="$cache1" docker scout cves --only-severity "critical" --exit-code --locations archive://traefik.tar &
  
  cache2="$(mktemp -d)/scout_cache"
  echo "Using cache $cache2"
  DOCKER_SCOUT_CACHE_DIR="$cache2" docker scout cves --only-severity "critical" --exit-code --locations archive://postgres.tar &
done
wait
rm traefik.tar postgres.tar
Lenguaje dominante
Shell
Estrellas
454
Forks
134
Métricas de merge de PR
Sin PR fusionados en 30 d

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de docker/scout-cli

Todos los issues de docker/scout-cli

Issues similares

Más issues de Shell/Bash

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.