最高效方式是用docker history查指令层并配合专用工具定位风险点;重点盯CREATED BY中的模糊基础镜像、未锁版本安装命令、缺少清理的包管理操作,SIZE中异常大层,以及COMMENT或空层中的高危配置。
直接用
查指令层,再配合专用工具定位风险点,是最高效的方式。关键不在“看全”,而在“盯准”几处高危信号。
聚焦 history 输出里的三类危险线索
运行
后,重点扫以下三列:
CREATED BY
:找模糊基础镜像(如
)、未锁版本的安装命令(如
)、缺少清理的包管理操作(如
但没跟
)
SIZE
:异常大的层(比如超 50MB)可能含调试工具(
、
、
)、临时构建产物或未删日志
COMMENT
或空层:某些元数据层虽无文件变更,但若含
或
等配置,也属潜在风险
用 dive 交互式查看每层文件增删
安装后运行
,进入可视化界面:
Docker Sandbox
创建并管理 Docker 沙箱虚拟机环境以安全执行代理。适用于运行不受信任代码、探索包或隔离代理工作负载。支持 Claude、Codex、Copilot、Gemini 和 Kiro 代理,并提供网络代理控制。
下载
按方向键切换图层,右侧实时显示该层新增、修改、删除的文件
重点关注
、
、
等路径是否意外写入
发现某层突然多出
或
,就说明该层引入了非预期能力
用
docker
scout 定位漏洞归属的具体层
执行
,输出中每条 CVE 都会标注:
Layer ID
:精确到 sha256 哈希值,可对应到
的某一行
Packages
:明确指出是
还是
引入的漏洞
Fix Version
:直接给出升级建议,例如 “Upgrade openssl to 1.1.1t”
验证关键层实际内容,不只信 metadata
history 只告诉你“哪一层”,要确认“里面有什么”,需实查:
启动容器并进 shell:
,然后运行
或
导出某层 tar 并快速筛查敏感文件:
检查二进制依赖:
,确认是否误带 glibc 二进制到 Alpine 镜像中
docker historydocker history your-image:tagFROM ubuntu:latestRUN pip install -r requirements.txtRUN apt-get update && apt-get install ...rm -rf /var/lib/apt/lists/*vicurlnetcatENV DEBUG=1EXPOSE 8080dive your-image:tag/etc/passwd/root/.ssh/app/secrets.json/usr/bin/nc/tmp/install.shdocker scout cves your-image:tagdocker historyopenssl 1.1.1nlibz 1.2.11docker run --rm -it --entrypoint sh your-image:tagapt list --installed | grep sslpip list | grep requestsdocker save your-image:tag | tar -xO '*/layer.tar' | tar -t | grep -E "(vi|nc|wget|\.pem|id_rsa)"ldd /usr/local/bin/app