如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
go-cve-dictionary 是一款用于构建 NVD(美国国家漏洞数据库)和 JVN(日本漏洞数据库)本地副本的工具。它能够获取包含 CVE 标识符的安全漏洞信息(包括详细描述、风险评分等),并以 SQLite、MySQL、PostgreSQL 或 Redis 格式存储本地数据库。工具提供 HTTP 服务器模式,支持通过 RESTful API 接口轻松查询漏洞数据,适用于本地漏洞数据管理与查询场景。
bashdocker pull kotakanbe/go-cve-dictionary
Docker Run 快速启动
1. 初始化数据库(首次使用)
获取 2002 年至今的 NVD 完整数据(约 10 分钟,视网络情况):
bash# 创建本地数据目录 mkdir -p ./data # 拉取历史数据(2002年至当前年份) docker run --rm -v $(pwd)/data:/app/data \ kotakanbe/go-cve-dictionary \ fetchnvd -years $(seq 2002 $(date +"%Y")) -dbpath /app/data/cve.sqlite3
2. 启动 HTTP 服务器
bashdocker run -d -p 1323:1323 -v $(pwd)/data:/app/data \ --name go-cve-dictionary \ kotakanbe/go-cve-dictionary \ server -bind 0.0.0.0 -dbpath /app/data/cve.sqlite3
Docker Compose 配置
创建 docker-compose.yml:
yamlversion: '3' services: go-cve-dictionary: image: kotakanbe/go-cve-dictionary container_name: go-cve-dictionary ports: - "1323:1323" volumes: - ./data:/app/data # 数据库文件存储 - ./logs:/var/log/vuls # 日志存储 command: server -bind 0.0.0.0 -dbpath /app/data/cve.sqlite3 -log-dir /var/log/vuls restart: unless-stopped
启动服务:
bashdocker-compose up -d
核心子命令说明
| 子命令 | 功能描述 |
|---|---|
list | 显示已获取的漏洞数据库列表 |
fetchnvd | 从 NVD 获取漏洞数据 |
fetchjvn | 从 JVN 获取漏洞数据 |
server | 启动 HTTP 服务器提供查询接口 |
fetchnvd:获取 NVD 数据
基本语法:
bashdocker run --rm -v $(pwd)/data:/app/data \ kotakanbe/go-cve-dictionary \ fetchnvd [选项] -dbpath /app/data/cve.sqlite3
主要选项:
| 选项 | 描述 |
|---|---|
-years | 指定年份,如 -years 2022 2023,获取特定年份数据 |
-latest | 获取最近 8 天内更新的数据(NVD recent 和 modified feeds) |
-last2y | 获取最近 2 年的数据(推荐定期更新使用) |
-dbtype | 数据库类型:sqlite3(默认)、mysql、postgres、redis |
-dbpath | 数据库路径或连接字符串(SQLite 为文件路径,其他为连接串) |
-http-proxy | HTTP 代理地址,格式 http://proxy:port |
-debug | 启用调试模式,输出详细过程信息 |
-log-dir | 日志目录(默认 /var/log/vuls,建议挂载本地目录) |
示例:
bashdocker run --rm -v $(pwd)/data:/app/data \ kotakanbe/go-cve-dictionary \ fetchnvd -last2y -dbpath /app/data/cve.sqlite3
bashdocker run --rm -v $(pwd)/data:/app/data \ kotakanbe/go-cve-dictionary \ fetchnvd -years 2023 -http-proxy http://proxy:8080 -dbpath /app/data/cve.sqlite3
fetchjvn:获取 JVN 数据
从日本 JVN 数据库获取漏洞数据,用法与 fetchnvd 类似。
主要选项:与 fetchnvd 相同,支持 -years、-latest、-last2y 等参数。
示例:
bashdocker run --rm -v $(pwd)/data:/app/data \ kotakanbe/go-cve-dictionary \ fetchjvn -last2y -dbpath /app/data/cve.sqlite3
server:启动 HTTP 服务器
基本语法:
bashdocker run -d -p 1323:1323 -v $(pwd)/data:/app/data \ --name go-cve-dictionary \ kotakanbe/go-cve-dictionary \ server [选项] -dbpath /app/data/cve.sqlite3
主要选项:
| 选项 | 描述 |
|---|---|
-bind | 绑定地址(默认 127.0.0.1,容器中需设为 0.0.0.0 以对外提供服务) |
-port | 服务端口(默认 1323) |
-dbtype | 数据库类型(同 fetchnvd) |
-dbpath | 数据库路径或连接字符串 |
-debug | 启用调试模式,输出 HTTP 请求日志 |
示例:
bashdocker run -d -p 8080:8080 -v $(pwd)/data:/app/data \ --name go-cve-dictionary \ kotakanbe/go-cve-dictionary \ server -bind 0.0.0.0 -port 8080 -dbpath /app/data/cve.sqlite3
查询特定 CVE(如 HeartBleed)
bashcurl http://localhost:1323/cves/CVE-2014-0160 | jq .
返回结果示例(部分):
json{ "CveID": "CVE-2014-0160", "Nvd": { "Summary": "The (1) TLS and (2) DTLS implementations in OpenSSL 1.0.1 before 1.0.1g do not properly handle Heartbeat Extension packets...", "Score": 5, "AccessVector": "NETWORK", "AccessComplexity": "LOW", "Authentication": "NONE", "ConfidentialityImpact": "PARTIAL", "IntegrityImpact": "NONE", "AvailabilityImpact": "NONE" }, "Jvn": { "Title": "OpenSSL の heartbeat 拡張に情報漏えいの脆弱性", "Summary": "OpenSSL の heartbeat 拡張の実装には、情報漏えいの脆弱性が存在します...", "JvnID": "JVNDB-2014-001920", "Score": 5 } }
查询特定 CPE 对应的 CVE(如 Ruby on Rails 4.0.2)
bashcurl -H "Content-Type: application/json" \ -X POST -d '{"name": "cpe:/a:rubyonrails:ruby_on_rails:4.0.2:-"}' \ http://localhost:1323/cpes | jq .
返回结果包含该 CPE 条目相关的所有 CVE 漏洞列表。
建议通过 cron 设置定时任务定期更新数据:
bash# 每周日 3 点更新最近 2 年 NVD 数据 echo "0 3 * * 0 docker run --rm -v /path/to/data:/app/data kotakanbe/go-cve-dictionary fetchnvd -last2y -dbpath /app/data/cve.sqlite3" | crontab -
默认日志存储在 /var/log/vuls,建议挂载本地目录以便持久化:
bashdocker run --rm -v $(pwd)/logs:/var/log/vuls -v $(pwd)/data:/app/data \ kotakanbe/go-cve-dictionary \ fetchnvd -latest -dbpath /app/data/cve.sqlite3 -log-dir /var/log/vuls
连接字符串格式:user:password@tcp(host:port)/dbname?parseTime=true
示例:
bash# 获取数据 docker run --rm \ kotakanbe/go-cve-dictionary \ fetchnvd -last2y \ -dbtype mysql \ -dbpath "cveuser:password@tcp(mysql-host:3306)/cvedb?parseTime=true" # 启动服务器 docker run -d -p 1323:1323 \ kotakanbe/go-cve-dictionary \ server -bind 0.0.0.0 \ -dbtype mysql \ -dbpath "cveuser:password@tcp(mysql-host:3306)/cvedb?parseTime=true"
连接字符串格式:host=host user=user dbname=dbname password=pass sslmode=disable
示例:
bashdocker run --rm \ kotakanbe/go-cve-dictionary \ fetchjvn -latest \ -dbtype postgres \ -dbpath "host=pg-host user=cveuser dbname=cvedb password=pass sslmode=disable"
连接字符串格式:redis://host:port/db
示例:
bashdocker run --rm \ kotakanbe/go-cve-dictionary \ fetchnvd -latest \ -dbtype redis \ -dbpath "redis://redis-host:6379/0"
工具版本更新可能导致数据库 schema 变更,此时需指定新的数据库文件/连接串,避免数据冲突。
通过 -http-proxy 选项指定代理:
bashdocker run --rm -v $(pwd)/data:/app/data \ kotakanbe/go-cve-dictionary \ fetchnvd -latest -http-proxy http://proxy:8080 -dbpath /app/data/cve.sqlite3
启用调试模式查看详细过程:
bashdocker run --rm -v $(pwd)/data:/app/data \ kotakanbe/go-cve-dictionary \ fetchnvd -latest -dbpath /app/data/cve.sqlite3 -debug
NVD 数据属于公共领域,JVN 数据使用遵循 JVN 条款。工具本身许可证详见 https://github.com/kotakanbe/go-cve-dictionary/blob/master/LICENSE%E3%80%82
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。





来自真实用户的反馈,见证轩辕镜像的优质服务