Semgrep 是一款开源的静态代码分析工具,通过模式匹配识别代码中的错误、安全漏洞及代码规范问题。Semgrep 官方 Docker 镜像提供了便捷的容器化部署方式,无需本地安装依赖,即可快速在各类环境中运行代码扫描任务。
注意:Semgrep 官方 Docker 镜像已迁移至
semgrep/semgrep,旧镜像returntocorp/semgrep可能不再维护,建议使用新镜像地址。
.yaml 格式),适配特定项目需求。通过 docker run 命令启动容器,挂载目标代码目录并执行扫描:
bash# 扫描当前目录代码(默认使用内置规则) docker run --rm -v "${PWD}:/src" semgrep/semgrep semgrep scan
参数说明:
--rm:扫描完成后自动删除容器。-v "${PWD}:/src":将本地当前目录挂载到容器内 /src 目录(Semgrep 默认扫描路径)。semgrep scan:容器内执行的 Semgrep 命令(scan 为默认子命令,可省略)。1. 使用官方规则库
通过 --config(或 -c)指定官方规则集(如安全规则 p/security、代码质量规则 p/quality):
bash# 使用安全规则库扫描当前目录 docker run --rm -v "${PWD}:/src" semgrep/semgrep semgrep scan --config p/security
2. 使用自定义规则文件
挂载本地规则文件(如 rules.yaml)并指定路径:
bash# 使用本地自定义规则扫描 docker run --rm -v "${PWD}:/src" -v "${PWD}/rules.yaml:/rules.yaml" semgrep/semgrep semgrep scan --config /rules.yaml
3. 使用环境变量配置
通过 SEMGREP_CONFIG 环境变量指定规则(优先级低于命令行 --config):
bashdocker run --rm -v "${PWD}:/src" -e "SEMGREP_CONFIG=p/security" semgrep/semgrep semgrep scan
通过 --output(或 -o)指定输出文件及格式:
bash# 输出 JSON 格式结果到本地文件 docker run --rm -v "${PWD}:/src" semgrep/semgrep semgrep scan --config p/security --output results.json --format json
创建 docker-compose.yml 文件,定义扫描服务:
yamlversion: '3' services: semgrep-scan: image: semgrep/semgrep volumes: - ./:/src # 挂载目标代码目录 - ./semgrep-rules:/rules # 挂载自定义规则目录(可选) environment: - SEMGREP_CONFIG=/rules # 指定自定义规则路径(若挂载规则目录) - SEMGREP_OUTPUT=results.sarif # 输出 SARIF 格式结果(适配 GitHub Code Scanning) command: semgrep scan --format sarif
启动扫描:
bashdocker-compose up
| 环境变量 | 说明 | 示例值 |
|---|---|---|
SEMGREP_CONFIG | 规则配置路径(同 --config 参数) | p/security 或 /rules |
SEMGREP_IGNORE | 忽略扫描的目录/文件(逗号分隔) | node_modules,dist |
SEMGREP_OUTPUT | 结果输出文件路径 | results.json |
SEMGREP_FORMAT | 输出格式(text/json/sarif) | sarif |
semgrep)无权限访问挂载目录,可通过 --user $(id -u):$(id -g) 调整用户 ID,避免文件权限冲突。docker pull semgrep/semgrep 拉取最新镜像以获取最新规则。p/security)时,容器需联网下载规则,离线环境需提前下载规则文件并本地挂载。更多详情可参考 Semgrep 官方文档。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务