You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Grype扫描alpine镜像检出的包在容器内无法找到?

问题:Grype扫描alpine:latest检出的包在容器内无法找到

运行中的Docker容器内容

docker run -it alpine:latest sh 
/ # ls -lh /var/lib/apk/
total 0      

Grype扫描结果

我使用Grype对alpine Docker镜像进行扫描,结果如下:

grype alpine:latest

NAME           INSTALLED   FIXED-IN  TYPE  VULNERABILITY   SEVERITY   
libcrypto3     3.1.4-r2    3.1.4-r5  apk   CVE-2024-0727   Medium    
libcrypto3     3.1.4-r2    3.1.4-r3  apk   CVE-2023-6129   Medium    
libcrypto3     3.1.4-r2    3.1.4-r4  apk   CVE-2023-6237   Unknown   
libssl3        3.1.4-r2    3.1.4-r5  apk   CVE-2024-0727   Medium    
libssl3        3.1.4-r2    3.1.4-r3  apk   CVE-2023-6129   Medium    
libssl3        3.1.4-r2    3.1.4-r4  apk   CVE-2023-6237   Unknown   

原因分析

  1. Alpine镜像的最小化设计:alpine:latest默认是精简镜像,不会保留/var/lib/apk/下的安装数据库文件,容器启动后该目录为空,但包实际已经预装在系统中。
  2. Grype的扫描逻辑:Grype直接解析镜像的文件系统层,提取已安装包的文件特征,不需要依赖apk数据库,因此能检测到libcrypto3、libssl3这类系统核心依赖包。

验证包存在的方法

在容器内执行以下命令可确认包是否安装:

# 检查库文件是否存在
ls -lh /usr/lib/libcrypto.so.3
ls -lh /usr/lib/libssl.so.3

# 通过apk文件匹配查询
apk info --installed libcrypto3 libssl3

解决建议

如果需要在容器内保留apk数据库以便后续包管理,可在构建镜像时使用apk add --no-cache <包名>,或者启动容器后执行apk update生成数据库文件。

内容的提问来源于stack exchange,提问作者Noureddine Abdelmonem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 07:57:46