【Docker项目实战】使用Docker部署HarborGuard容器安全扫描平台
一、HarborGuard介绍
1.1 HarborGuard项目简介
HarborGuard 是一个功能全面的容器安全扫描平台,集成多种主流安全工具,通过直观的 Web 界面帮助开发者和团队轻松管理与可视化 Docker 镜像的安全评估,涵盖漏洞检测、SBOM 生成与最佳实践检查,让容器安全变得清晰可控。
1.2 HarborGuard主要特点
- 🧩 全面的扫描能力:集成 Trivy、Grype、Syft、Dockle、OSV Scanner 和 Dive 六大主流工具,覆盖漏洞扫描、SBOM 生成与配置合规检查。
- 🔍 智能结果分析:自动对发现的漏洞进行分类与严重性评估,提供清晰的安全风险概览。
- 📊 先进的可视化界面:支持交互式散点图、历史扫描对比和实时进度监控,让安全数据一目了然。
- 🧰 开发者友好设计:基于 React 19 + Next.js 15 与 TypeScript 构建,技术栈现代,易于二次开发与维护。
- 💾 灵活的数据存储:支持 SQLite 和 PostgreSQL 数据库,满足从轻量部署到企业级应用的不同需求。
- ⚙️ 简便的配置管理:通过环境变量即可完成全部配置,适配多种部署环境,提升部署效率。
- 🔌 企业级功能支持:提供 RESTful API,支持批量导出报告与持久化存储扫描历史,便于集成与审计。
- 🌐 实时交互体验:界面响应迅速,支持按严重性过滤、分组查看,帮助团队快速定位关键问题。
二、本次实践规划
2.1 本地环境规划
本次实践为个人测试环境,操作系统版本为 Ubuntu 24.04.2 LTS。
| hostname | IP地址 | 操作系统版本 | Docker版本 | 部署项目 | 备注 |
|---|---|---|---|---|---|
| jeven | 192.168.3.88 | Ubuntu 24.04.2 LTS | 28.5.0 | HarborGuard | —— |
2.2 本次实践介绍
1.本次实践部署环境为个人测试环境,生产环境请谨慎;
2.在Docker环境下部署HarborGuard容器安全扫描平台。
三、本地环境检查
3.1 检查Docker服务状态
检查Docker服务是否正常运行,确保Docker正常运行。
root@jeven:~# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: enabled)
Active: active (running) since Sat 2025-10-04 13:29:05 UTC; 2 days ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 888 (dockerd)
Tasks: 65
Memory: 1.2G (peak: 1.4G)
CPU: 3min 23.296s
CGroup: /system.slice/docker.service
3.2 检查Docker版本
检查Docker版本
root@jeven:~# docker -v
Docker version 28.5.0, build 887030f
3.3 检查docker compose 版本
检查Docker compose版本,确保2.0以上版本。
root@jeven:~# docker compose version
Docker Compose version v2.39.4
四、拉取HarborGuard镜像
下载HarborGuard容器镜像,镜像名称为:
registry.cn-hangzhou.aliyuncs.com/jeson/harborguard:latest。
docker pull registry.cn-hangzhou.aliyuncs.com/jeson/harborguard:latest

五、部署HarborGuard服务
5.1 创建部署目录
- 创建HarborGuard部署目录
mkdir -p /data/harborguard/data && cd /data/harborguard
- 设置目录权限
chmod -R 777 /data/harborguard
5.2 编辑部署文件
使用docker-cli方式部署,可参考以下命令:
docker run -d \
--restart unless-stopped \
--name harborguard \
-p 3000:3000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $(pwd)/data:/data \
-e DATABASE_URL="file:/data/app.db" \
registry.cn-hangzhou.aliyuncs.com/jeson/harborguard:latest
在部署目录下,创建docker-compose.yaml文件,内容如下所示:
vim docker-compose.yaml
version: '3'
services:
harborguard:
image: registry.cn-hangzhou.aliyuncs.com/jeson/harborguard:latest
container_name: harborguard
restart: always
ports:
- "3900:3000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /data/harborguard/data:/data
- 环境变量参考:
| 变量名 | 描述 | 默认值 | 有效值 | 示例 |
|---|---|---|---|---|
| 扫描仪配置 | ||||
| MAX_CONCURRENT_SCANS | 限制并行扫描器的执行以防止资源耗尽 | 3 | 1-20 | MAX_CONCURRENT_SCANS=5 |
| SCAN_TIMEOUT_MINUTES | 允许单个扫描仪执行的最大时间(分钟) | 30 | 5-180 | SCAN_TIMEOUT_MINUTES=60 |
| ENABLED_SCANNERS | 启用的扫描仪(逗号分隔列表) | trivy,grype,syft,dockle,osv,dive | 任意组合:trivy、grype、syft、dockle、osv、dive | ENABLED_SCANNERS=trivy,grype |
| 日志记录和调试 | ||||
| LOG_LEVEL | 控制应用程序日志的详细程度 | info | debug, info, warn, error | LOG_LEVEL=debug |
| 数据库与维护 | ||||
| DATABASE_URL | PostgreSQL 数据库连接字符串 | 捆绑的PostgreSQL | 外部PostgreSQL:postgresql://user:pass@host:port/db | DATABASE_URL=“postgresql://user:pass@localhost:5432/harborguard” |
| CLEANUP_OLD_SCANS_DAYS | 自动删除比指定天数更旧的扫描记录 | 30 | 1-365 | CLEANUP_OLD_SCANS_DAYS=90 |
5.3 创建HarborGuard容器
执行以下命令,创建HarborGuard容器。
docker compose up -d

5.4 查看HarborGuard容器状态
检查HarborGuard容器运行状态,确保HarborGuard容器正常启动。
root@jeven:/data/harborguard# docker compose ps
WARN[0000] /data/harborguard/docker-compose.yaml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
harborguard registry.cn-hangzhou.aliyuncs.com/jeson/harborguard:latest "docker-entrypoint.s…" harborguard 19 seconds ago Up 19 seconds(health: starting) 5432/tcp, 0.0.0.0:3900->3000/tcp, [::]:3900->3000/tcp

5.5 检查HarborGuard容器日志
检查容器运行日志,确保HarborGuard服务正常运行。
docker compose logs

六、访问HarborGuard服务
浏览器地址:
http://<个人的服务器IP>:3900,访问HarborGuard初始页。如果无法访问,请确保宿主机的防火墙已关闭或已放行相关端口,对于云服务器还需配置相应的安全组规则。

七、HarborGuard基本使用
在HarborGuard首页,点击左侧菜单栏 New Scan— Local ——搜索本地镜像,选择其中一个本地容器镜像,确定开始扫描。

等待一段时间,扫描完成后,结果如下所示:

八、总结
本次实践通过Docker成功部署了HarborGuard容器安全扫描平台,整个过程简单高效,仅需几步操作即可完成环境搭建。HarborGuard提供了丰富的扫描功能和灵活的配置选项,能有效满足容器安全检测需求,帮助用户及时发现镜像潜在风险。通过实际操作验证了平台的可用性,其直观的界面和多样化的扫描工具让容器安全管理更加便捷。HarborGuard是一款实用的容器安全扫描工具,适合各类场景下的容器镜像安全检测工作。
- 点赞
- 收藏
- 关注作者
评论(0)