Docker实战 | 使用Docker部署HarborGuard容器安全扫描平台

【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正常运行。

bash 复制代码
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版本

bash 复制代码
root@jeven:~# docker -v
Docker version 28.5.0, build 887030f

3.3 检查docker compose 版本

检查Docker compose版本,确保2.0以上版本。

bash 复制代码
root@jeven:~# docker compose version
Docker Compose version v2.39.4

四、拉取HarborGuard镜像

下载HarborGuard容器镜像,镜像名称为:registry.cn-hangzhou.aliyuncs.com/jeson/harborguard:latest。

bash 复制代码
docker pull registry.cn-hangzhou.aliyuncs.com/jeson/harborguard:latest

五、部署HarborGuard服务

5.1 创建部署目录

  • 创建HarborGuard部署目录
bash 复制代码
mkdir -p /data/harborguard/data &&  cd  /data/harborguard
  • 设置目录权限
bash 复制代码
chmod -R 777  /data/harborguard

5.2 编辑部署文件

使用docker-cli方式部署,可参考以下命令:

bash 复制代码
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文件,内容如下所示:

bash 复制代码
vim docker-compose.yaml
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容器。

bash 复制代码
docker compose up -d

5.4 查看HarborGuard容器状态

检查HarborGuard容器运行状态,确保HarborGuard容器正常启动。

bash 复制代码
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服务正常运行。

bash 复制代码
docker compose logs

六、访问HarborGuard服务

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

七、HarborGuard基本使用

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

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

八、总结

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

相关推荐
江湖有缘1 小时前
Docker实战 | 使用Docker部署Reubah文件转换器和图像处理器
docker·容器·eureka
福狼1 小时前
Go 用户密码存储实践:从 MD5 到 Argon2id
安全
m0_547486662 小时前
《人工智能安全》全套PPT课件2026(复旦大学)
人工智能·安全·人工智能安全
寻林写彡2 小时前
Web 安全三大漏洞靶场作业全整理:PHP 核心函数与防御方案汇总
安全·php
T.O.P_KING2 小时前
Falco vs. Tetragon:云原生运行时安全选型指南
安全·云原生
leizhen198408092 小时前
Vibe Coding:门槛降了,但判断力成了新的门槛(漫画)
人工智能·安全
七夜zippoe2 小时前
把 OpenClaw Agent 搬进 K8s:容器化部署全记录
ai·云原生·容器·kubernetes·openclaw
骑着蜗牛撵大象3272 小时前
ToolJet + PostgreSQL:后台表格、查询和流程,一次搭成可远程访问的业务系统
数据库·低代码·docker·postgresql·内部工具·tooljet
guohuang2 小时前
让机器人安全失败:点云中断、TF 超时和控制器崩溃怎么测
git·安全·机器人