Vulhub 漏洞环境提速实战:Docker 镜像该改哪几处
2026/8/24 4:01:31 网站建设 项目流程

Vulhub 漏洞环境提速实战:Docker 镜像该改哪几处

【免费下载链接】vulhubPre-Built Vulnerable Environments Based on Docker-Compose项目地址: https://gitcode.com/GitHub_Trending/vu/vulhub

一条docker compose up跑了八分钟,终端转圈转到想合上盖子。Vulhub 漏洞环境的慢,多半卡在 Docker 镜像优化没做——拉取、构建、并行运行,每一层都有能砍的时间。

🐳 网络层:仓库克隆换国内源,Registry 拉取不再卡死

git 克隆换源,省掉拉全量历史的几分钟

Vulhub 默认从 GitHub 拉仓库,国内直连经常卡在进度条上。把克隆命令换成国内镜像站,并只取最新一次提交(--depth 1跳过全量历史记录):

git clone --depth 1 https://gitcode.com/GitHub_Trending/vu/vulhub

我这边同一台机器,直连拉全量历史要五六分钟,换源加浅克隆基本一分钟落地。仓库只读不改历史,浅拉不亏任何东西。

改 daemon.json 配镜像源,pull 从几十秒到秒级

改哪里:/etc/docker/daemon.json(没有就新建)。改成什么:加入registry-mirrors,内容用下面片段:

{ "registry-mirrors": [ "https://docker.mirrors.ustc.edu.cn", "https://hub-mirror.c.163.com", "https://mirror.baidubce.com" ] }

改完执行sudo systemctl restart docker重启守护进程。效果:docker compose up里每个image:的拉取都走国内源,原本卡死的 pull 变成秒级完成。官方 README 也把镜像站加速列为大陆拉取失败的首选解法,见 README.zh-cn.md。

Compose V2 子命令,别再装老版 Python 包

老版docker-compose是独立 Python 包,依赖一堆、报错一堆;现在的docker compose(注意中间是空格)是 Docker 自带子命令,装一次 Docker 就有,还省一次安装。装过老版的直接卸载,docker compose version确认版本即可。

🏗️ 构建层:缓存省掉重复步骤,Java 镜像砍到 200MB

缓存到底省了哪几步:第二次构建只剩改动那步

以 flask/ssti 为基础镜像的构建为例(Dockerfile 在 base/flask/1.1.1/Dockerfile):第一次跑要拉python:3.6基础层、pip install装 flask 全家,全在等网络。第二次构建时这些层原样命中缓存,直接跳过下载和安装,只重跑你改过的那一行RUN。所以改漏洞环境时别动 Dockerfile 结构,只改必要部分,重建就是秒级。

两阶段构建,Java 镜像从 800MB 压到 200MB

Java 系环境(Shiro、Dubbo、Log4j 这类)默认镜像动辄 800MB,拉取和落盘都在等。思路是分两段:第一阶段用完整 JDK 编译打包,第二阶段只把产物拷进精简 JRE 镜像,最终镜像里不带编译器。骨架长这样(以 base/spring 下的任一镜像为参照):

FROM maven:3.8 AS build COPY . /src RUN mvn -f /src/pom.xml package -DskipTests FROM openjdk:8-jre-slim COPY --from=build /src/target/app.jar /app.jar CMD ["java", "-jar", "/app.jar"]

镜像小了,pull、启动、占盘三个环节跟着全快。

⚡ 运行层:多环境并行不拖垮机器

一条 for 循环批量拉起,别逐个进目录

在 Vulhub 根目录执行,一次拉起整批环境(按你实际要测的目录增删列表):

for d in flask/ssti shiro/CVE-2016-4437 log4j/CVE-2021-44228; do echo "== $d" (cd "$d" && docker compose up -d) done

五个环境从"五次 cd、五次敲命令"缩成一次回车,失败的环境也单独报在哪一环。

deploy.resources 限额,防止一个环境吃光内存

不加这条会怎样:某个 Java 环境起完 JVM 就把 4G 内存吃光,宿主机开始 swap,其他环境和桌面全卡死。在 docker-compose.yml 对应服务下加这几行:

deploy: resources: limits: cpus: "0.5" memory: 512M

超限直接拒载或杀掉该服务,其余环境不受牵连。

down -v 与 system prune:一个拆环境,一个清全局

docker compose down -v拆掉当前环境的容器并删卷,把该环境的磁盘占位立刻还回来;docker system prune是全局清扫——停用的容器、悬空镜像、废弃网络一次清掉。前者管单个环境收尾,后者管整个 Docker 的磁盘卫生。

🚨 避坑清单

  • Docker 没权限读当前目录会报怪错:README.zh-cn.md
  • 部分环境不支持 ARM,起不来先看官方说明:README.zh-cn.md
  • Kali 上环境起不来,多半ulimit nofile太低:README.zh-cn.md
  • M 系列芯片失败,设DOCKER_DEFAULT_PLATFORM后重跑:README.zh-cn.md

改完配置,先拿flask/ssti这种最轻的环境跑通一遍,再批量铺开。

【免费下载链接】vulhubPre-Built Vulnerable Environments Based on Docker-Compose项目地址: https://gitcode.com/GitHub_Trending/vu/vulhub

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询