- comparisons
- container scanning
Container vulnerability scanning tools in 2026, by job
Trivy, Grype, Docker Scout, Snyk, Trivy Operator, Kubescape and StackRadar, sorted by job: scanning a CI image, a registry, or a running cluster, and where each stops.
StackRadar Team
9 min read
Most "best container scanner" lists rank ten tools against each other as if they did the same job. They do not. A container vulnerability scanner is asked one of three questions: is this image clean enough to ship, what is in this registry, or which running workloads does this CVE affect. A tool that is excellent at one is often not built for the others.
This post sorts the tools by job, says where each one stops, and gives our own two tools the same scrutiny. Licences, prices and features were checked in September 2026; the comparison pages go deeper per product.
Which tool for which job
| Job | The question | Start with | Also good |
|---|---|---|---|
| CI / image scanning | Is this image clean enough to ship? | Trivy or Grype | OSV-Scanner, StackRadar CLI (KEV gate) |
| Registry scanning | What is in everything we have pushed? | Your registry's own scanner | Docker Scout (Docker Hub), Snyk Container |
| Running-cluster scanning | Which running workloads does CVE-X affect, and what deployed them? | Trivy Operator (one or two clusters) | Kubescape (posture too), StackRadar (fleet, history) |
The third job is the one the first two cannot do. A cluster runs many images nobody in your pipeline built (ingress controllers, agents, sidecars, CSI drivers), and an image that was clean when CI scanned it acquires new CVEs every week it keeps running.
Job 1: scanning an image in CI
Trivy: the default, if you pin it
Trivy (Aqua Security, Apache-2.0) is the default answer and deserves to be. One binary scans images, filesystems, git repositories, IaC, Kubernetes manifests and secrets, and it can re-scan an SBOM file with trivy sbom. If you have no scanner in CI today, add Trivy and move on.
trivy image --severity HIGH,CRITICAL --exit-code 1 registry.example.com/shop/checkout:1.42.0Pin it properly. In March 2026 attackers force-pushed most trivy-action release tags to a credential stealer and briefly published a malicious Trivy binary (v0.69.4) and images (GHSA-69fq-xp46-6x23). Aqua's own advice holds for every scanner in this list: reference GitHub Actions by commit SHA, not by tag.
Where it stops: Trivy is a scanner, not a system. It has no memory between runs, so "is there a new CVE in the image we shipped last month?" needs a rescan you schedule yourself. Findings are ranked by severity only; EPSS and KEV are not in its output, so teams bolt them on afterwards.
Grype (with Syft): the best CI ranking
Grype (Anchore, Apache-2.0) is the matcher half of a pair; Syft generates the SBOM. The design is the reason to choose it: generate the SBOM once, attach it to the image, and scan the SBOM rather than the image every time you want a fresh answer. Grype also prints EPSS, KEV status and a composite risk score for each finding, which makes its output the best ranked of the free CI scanners.
syft registry.example.com/shop/checkout:1.42.0 -o cyclonedx-json > checkout.cdx.json
grype sbom:checkout.cdx.json --fail-on highWhere it stops: images, filesystems and SBOMs only; no IaC, no secrets, no Kubernetes awareness. It is as stateless as Trivy: the SBOM-first workflow makes re-matching cheap, but the scheduling and storage are yours to build. Anchore sells that layer as Anchore Enterprise.
OSV-Scanner
OSV-Scanner (Google, Apache-2.0) matches against OSV.dev directly. Version 2 (March 2025) made container scanning first-class, layer-aware for Debian, Ubuntu and Alpine images, and it is strongest on language ecosystems, where OSV's advisories come straight from sources such as the Go, PyPI and RustSec databases. Distro coverage outside those three is thinner than Trivy's and Grype's. It is also the library inside the StackRadar CLI.
StackRadar CLI
stackradar scan (Apache-2.0) scans a single image with --image, or every image a cluster is running, and has a --fail-on kev gate, so CI fails on CVEs that are being exploited rather than on "anything critical". It needs no account and sends no telemetry.
stackradar scan --image registry.example.com/shop/checkout:1.42.0 --fail-on kevWhere it stops: it inherits osv-scanner's distro coverage, has no EPSS column yet, and does no IaC, secrets or config scanning. For CI-only image scanning it is a reasonable choice, not a clearly better one than Trivy or Grype. The launch post lists its limits.
Job 2: scanning a registry
Docker Scout
Docker Scout analyses images on Docker Hub and, through integrations, ECR, ACR, Artifactory, Harbor and Nexus. Results show in Docker Desktop, the Hub UI and the CLI, whose --epss and --only-cisa-kev flags add exploitation data, and its base-image update recommendations are genuinely useful. Continuous analysis is free for one repository on Docker Personal and two on Pro; unlimited repositories need the per-user Team or Business plan. If your images live on Docker Hub, it is the least friction you will find. Head-to-head.
Where it stops: it knows the registry, not the cluster. Its environment tracking only knows what your pipeline tells it was deployed; it does not watch a cluster, so sidecars, operators and images from other registries are invisible to it.
Snyk Container
Snyk Container integrates with most registries and CI systems, opens base-image upgrade pull requests, and has the best developer-facing UX of the group. Its Risk Score blends CVSS, EPSS and exploit maturity. It is priced per contributing developer; the free plan allows 100 container tests a month, which a busy pipeline uses up fast. It fits best where the organisation already pays for Snyk Open Source or Code.
Where it stops: importing workloads from a running Kubernetes cluster is an Enterprise-plan feature, so on Free and Team it is a pipeline and registry tool. See the head-to-head.
Registry-native scanners
ECR (basic scanning, or enhanced scanning through Amazon Inspector), Google Artifact Registry, ACR through Defender for Cloud, Harbor (bundles Trivy) and GitLab's container registry all scan on push. They are the right answer when "what did we push?" is the whole question. They are the wrong answer when you need one view across three clouds, or anything about what is running.
Job 3: scanning what is running
Trivy Operator: the free default for one cluster
Trivy Operator watches workloads in one cluster, scans them with Trivy, and writes the results as custom resources (VulnerabilityReport, SbomReport, ConfigAuditReport and more) you read with kubectl. It is free, actively released (v0.34.0 in August 2026), keeps every result inside the cluster, and covers configuration, exposed secrets and RBAC as well as vulnerabilities. For one or two clusters and a "what is vulnerable right now?" question it is the tool we recommend most often, including on its own comparison page.
Where it stops: reports live in etcd with a 24-hour TTL by default and are regenerated by rescanning, so there is no history and no fleet view without an aggregation layer you build. Ranking is CVSS only. The StackRadar vs Trivy Operator post covers the trade-off in detail.
Kubescape: when posture is the bigger problem
Kubescape (a CNCF incubating project since January 2025, created by ARMO, Apache-2.0) is primarily a posture tool: NSA/CISA and CIS frameworks, misconfiguration scanning, RBAC. Its operator also scans images in-cluster, stores results as CRDs, rescans daily, and can use eBPF to mark which vulnerable packages are actually loaded at runtime, which StackRadar does not do. ARMO sells a hosted platform on top, now quote-only. Choose Kubescape when posture is the larger problem, or when runtime relevancy is a requirement. Head-to-head.
StackRadar: when you need the fleet and the history
StackRadar is an open-source (Apache-2.0) in-cluster scanner plus a managed dashboard. The scanner generates a CycloneDX SBOM per running image with Syft and uploads only that. StackRadar keeps the SBOM and re-matches it as advisories land, so a new CVE becomes a finding without a rescan. Every cluster is in one view, findings are attributed to workloads, Helm releases and ArgoCD applications, history is kept (30 days on Free, up to two years on paid plans), and the Radar Score ranks findings by likelihood × consequence, with EPSS and KEV driving the likelihood.
Where it stops: vulnerabilities only. No configuration audit, no RBAC assessment and no runtime detection, all of which Trivy Operator or Kubescape give you. The hosted product does not scan in CI; the CLI covers that. The scanner is Apache-2.0, but the dashboard it reports to is a hosted service in the EU, which rules it out for teams whose data may not leave the cluster.
The CNAPP platforms
Wiz, Sysdig, Aqua, Defender for Containers and Prisma Cloud all scan running clusters as one feature of a much larger product: cloud posture, runtime detection, identity. They are the right answer for a security organisation consolidating a dozen tools, and the wrong one for a platform team that wants one question answered. Most are quote-only and priced per node or workload, so a mid-sized fleet is usually a five-figure annual contract.
All of them, in one table
| Tool | CI image | Registry | Running cluster | New CVEs without a rescan | EPSS / KEV | Licence / price |
|---|---|---|---|---|---|---|
| Trivy | Yes | Via Harbor etc. | Partly (trivy k8s) | Manual (trivy sbom) | No | Apache-2.0 |
| Grype + Syft | Yes | No | No | Manual SBOM re-scan | Both | Apache-2.0 |
| OSV-Scanner | Yes | No | No | No | No | Apache-2.0 |
| StackRadar CLI | Yes | No | Yes, point-in-time | No | KEV | Apache-2.0 |
| Docker Scout | Yes | Yes | No | Yes, for enabled repos | Both (CLI) | 1 repo free, unlimited from Team (per user) |
| Snyk Container | Yes | Yes | Enterprise plan | Yes, monitored projects | EPSS | Free tier, then per developer |
| Trivy Operator | No | No | Yes, one cluster | No (24h TTL rescan) | No | Apache-2.0 |
| Kubescape | Via CLI | No | Yes, one cluster | No (daily rescan) | ARMO platform | Apache-2.0; ARMO quote-only |
| StackRadar | No (CLI does) | No | Yes, every cluster | Yes | Both | Free; paid from $59/mo |
| Wiz, Sysdig, Aqua, Defender | Yes | Yes | Yes | Yes | Varies | Quote-only |
A plain recommendation
- No scanner yet: Trivy in CI today, with the action pinned by SHA.
- Already producing SBOMs, or want EPSS and KEV in CI output: Grype against them.
- Images on Docker Hub: Docker Scout, before anything else.
- One or two clusters, no history requirement: Trivy Operator.
- Posture and misconfiguration matter as much as CVEs: Kubescape.
- Need "which pods, in which clusters, and what changed since March?" answered without rescanning: something that keeps the SBOM. That is StackRadar, or the equivalent you build on Syft and a database.
- Need posture, runtime and vulnerabilities from one vendor: a CNAPP, with a budget.
Frequently asked questions
What is the best container vulnerability scanning tool?
There is no single best one, because "scanning a container" is three different jobs. For an image in CI, Trivy and Grype are the free defaults and both are excellent. For a registry that scans on push, use the registry’s own scanner (ECR, Harbor with Trivy, Docker Scout for Docker Hub) or Snyk. For knowing which running Kubernetes workloads a CVE affects, you need a cluster-aware tool: Trivy Operator or Kubescape inside one cluster, or StackRadar for a managed view across clusters with history.
Is Trivy or Grype better?
They are close enough that the choice is usually about surroundings. Trivy scans more kinds of thing (images, filesystems, git repositories, IaC, secrets, Kubernetes clusters) from one binary. Grype only matches packages to vulnerabilities, pairs with Syft for SBOMs, and shows EPSS, KEV and a composite risk score in its output, which Trivy does not. Run both on the same image and they will disagree at the margins; that is normal.
Why do different scanners report different vulnerabilities for the same image?
Two reasons. Different catalogers find different packages: one may see a vendored Go module or a jar inside a jar that the other misses. And different matchers use different databases and different rules for version ranges, distro backports and unfixed advisories. A difference between two good scanners on a large image does not mean either is broken.
Do I need a paid container scanner?
Not to scan an image. Trivy, Grype, OSV-Scanner and the StackRadar CLI are free and need no account. What paid tools sell is what surrounds the scan: re-matching stored SBOMs as advisories land, one view across a fleet, history, alerting and remediation guidance. Decide whether you need those before you shop.
Can I scan a running Kubernetes cluster from my laptop?
Yes. The free StackRadar CLI (`stackradar scan`) uses your kubeconfig to list the images the cluster is running, scans each once and attributes findings to namespaces and pods. Trivy does something similar with `trivy k8s`. Both are point-in-time; for an answer that stays current you need something running in or watching the cluster.
More from the blog
All postsZero findings is not a clean image: two matching bugs and how we found them
We compared our scanner with Trivy and OSV-Scanner on one Helm chart. It invented 140 findings on one image and missed every OS finding on three distros.
10 min read
Trivy Operator without the etcd problem: where vulnerability findings should live
Trivy Operator stores each report as one object in etcd, and a big image does not fit. How to find the reports that were silently dropped, and what each fix costs.
9 min read
SBOM tools compared: Syft, Trivy, Docker Scout, cdxgen and cluster-level SBOMs
Syft, Trivy, Docker Scout and cdxgen compared: the current command for each, where each is best, and why an SBOM of what your cluster runs needs a different tool.
8 min read
Open-source vulnerability scanners for Kubernetes: what each one does and does not do
Trivy Operator, Kubescape, Grype and Syft, OSV-Scanner, the StackRadar CLI, and what became of KubeClarity: what each does, and what you still build yourself.
8 min read