Vulhub 漏洞环境搭建提速:Docker 镜像加速、缓存与批量操作避坑指南
【免费下载链接】vulhubPre-Built Vulnerable Environments Based on Docker-Compose项目地址: https://gitcode.com/GitHub_Trending/vu/vulhub
Vulhub 是基于 Docker Compose 的开源漏洞靶场集合,每个漏洞环境一个目录,一条docker compose up -d即可拉起。但多数人卡在搭建环节:Docker 镜像拉取慢甚至超时、环境构建久、磁盘空间不够用、ARM 机器直接起不来。本文围绕 Vulhub 环境搭建提速,给出镜像源、浅克隆、构建缓存、批量脚本四套可落地的方案,照做后单环境从小时级压到分钟级。
环境与准备
- x86_64 架构的 Linux 或装有 Docker Desktop 的 Mac;
- Docker 23.0+(自带 Compose V2 插件,无需单独装 docker-compose);
- 至少 1GB 可用内存,网络能访问配置好的国内镜像源。
满足这三条,后文的命令才能原样跑通;ARM 等非 x86 架构暂不支持,强行启动容易编译失败。
分步操作
Docker Compose V2 怎么确认
Compose V2 是 Docker 内置的子命令,省去了额外安装 Python 版 docker-compose 的兼容麻烦,也是 Vulhub 文档统一使用的启动方式。
docker compose version输出形如Docker Compose version v2.x.x即代表 V2 已就绪。
国内镜像源怎么配
Docker 默认直连 Docker Hub,国内网络下经常超时,在 Docker 守护进程配置文件里加几行国内镜像源即可分流。
{ "registry-mirrors": [ "https://docker.mirrors.ustc.edu.cn", "https://hub-mirror.c.163.com", "https://mirror.baidubce.com" ] }写入~/.docker/daemon.json(已有内容时把registry-mirrors合并进原 JSON),然后重启 Docker 使配置生效。
systemctl restart docker docker infodocker info的 "Registry Mirrors" 一栏列出刚配的地址,即代表配置生效。
拉取一个环境验证
每个环境目录都自带docker-compose.yml,用 flask/ssti/ 这类小环境做验证成本最低。
git clone --depth 1 https://gitcode.com/GitHub_Trending/vu/vulhub cd vulhub/flask/ssti docker compose up -d docker psdocker ps里状态为Up、ports 出现0.0.0.0:8000->8000即代表镜像拉取与启动都成功。
仓库浅克隆省下载
完整 clone 会连全部提交历史一起拉,而搭建只用得到最新代码,--depth 1只取一次快照。
git clone --depth 1 https://gitcode.com/GitHub_Trending/vu/vulhub几秒到几十秒完成 clone,且远小于完整仓库体积,即代表提速生效。
构建缓存为什么能省时间
Vulhub 的镜像 Dockerfile 都在base/目录,只要 Dockerfile 内容没变,重建时 Docker 直接复用已缓存的层,跳过重复下载。
所以改环境时尽量保持 Dockerfile 结构稳定、只动必要部分,改完重建时看到大量Using cache即代表缓存在工作。
多阶段构建减体积
部分环境可拆成两段:构建阶段用带 Maven 等工具链的镜像编译代码,运行阶段换精简 JRE 镜像,最终镜像更小,拉取和加载都更快。Java 类环境(如base/fastjson/、base/shiro/相关镜像)尤其受益,构建产物体积明显小于单阶段方案即代表有效。
容器正常跑起来后,页面能连上目标端口(如截图中27017数据库端口)就说明环境可用,可以开始复现了。
场景化技巧
批量启停多环境:需要连续测多个漏洞时,写个脚本循环目录执行docker compose up -d,测完统一docker compose down -v连卷一起删,省掉逐个进目录的操作,也避免残留数据占磁盘。
给容器限内存:在 compose 里给服务加deploy.resources.limits(如 cpus 0.5 / memory 512M),内存紧张时防止单个环境吃满资源、拖垮其他环境。
改了配置不想重建:compose 文件只改端口或环境变量时,用docker compose up -d --no-build跳过构建只重建容器,省掉缓存重建的等待。
避坑清单
- Permission denied → Docker 访问不到宿主机文件 → 确保它可读当前目录所有文件
- ARM/M 芯片起不来 → 镜像架构不匹配 →
export DOCKER_DEFAULT_PLATFORM=linux/amd64 - Kali 上环境起不来 →
ulimit nofile过低 → 调高文件句柄上限 docker-compose报错 → 连字符版已弃用 → 改用docker compose- 构建缓存全失效 → 改了 Dockerfile 前部指令 → 尽量只动文件末尾
小结与延伸
镜像源解决拉取慢,浅克隆省下载,缓存层避免重复构建,批量脚本省操作时间,四者叠起来,搭建时长基本只剩等待网络的时间。想确认某个环境的端口和复现步骤,先看各目录下的 README.zh-cn.md 总览;镜像是怎么构建的,翻 base/ 目录下的 Dockerfile 就有答案。
【免费下载链接】vulhubPre-Built Vulnerable Environments Based on Docker-Compose项目地址: https://gitcode.com/GitHub_Trending/vu/vulhub
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考