授权与合规声明本文全部操作对象均为自建隔离靶场本机容器或隔离虚拟机涉及安全测试的环节必须以取得合法授权为前提。未经授权的渗透测试违反《中华人民共和国网络安全法》与《刑法》相关条款须承担相应法律责任。本文只讲环境配置、版本对照与靶场隔离不含任何攻击步骤、利用载荷与绕过手法请勿将文中环境指向任何非自有系统。一、先分清拉不动不是一种问题是三类1.1 照着 README 敲卡住了很多人第一次装靶场的经过是相似的找到官方 README把命令一行一行抄进终端回车然后就没有下文了。屏幕上没有想要的结果人也就停在那里。停住之后脑子里的第一个念头往往是是不是我的机器不行。这个念头出现得太早也下得太快。因为它默认了拉不动只有一种原因而实际上一共有三类且这三类要看的证据完全不同。1.2 三类问题三种证据本文把镜像拉不下来这件事拆成三类网络与镜像仓库可达性、命令与前置条件、本机限制。三类的共同点是看起来都是没反应区别在于你要去哪里找答案。类别这一类在问什么证据落在哪里最容易产生的错觉第一类 网络与镜像仓库这台机器能不能取到远端的镜像官方文档对可达性的说明、镜像来源的写法“官方 README 写了命令就说明一定能拉到”第二类 命令与前置条件我敲的这条命令是不是被正确识别Docker 装没装、compose 用哪种写法、所在目录对不对“命令抄得一字不差就一定对”第三类 本机限制这台机器给不给得起它要的资源内存大小、系统资源限制、发行版差异“能在别人机器上跑就一定能在我这儿跑”顺序上建议这么走先确认第二类因为它最快、最便宜再看第一类最后才怀疑第三类。理由很直接——如果命令根本没被识别后面两类连开始的机会都没有。1.3 本文的范围本文只做一件事把拉取 / 安装 / 启动之前的准备阶段讲清楚。到容器起来了就停。容器起来之后为什么访问不到是另一篇文章的题目本文不重复。只给读者自己就能做的确认动作全部是看不是改。不给任何具体报错文本——官方文档里没有的本文不替它补。只写现象与动作。⚠️代码待验证# 三类问题的骨架只读理解用不执行任何写操作# 第一类 网络与镜像仓库 这台机器能不能取到远端的镜像# 第二类 命令与前置条件 我敲的这条命令是不是被正确识别# 第三类 本机限制 这台机器给不给得起它要的资源# 建议顺序 先第二类 - 再第一类 - 最后第三类本章可以带走的一句卡住的时候别急着换机器先问自己一句——我卡的是取不到还是没敲对还是给不起。二、第一类网络与镜像仓库可达性2.1 官方对这一点有明确说法第一类问题最容易被误判。读者看到没反应第一反应是把整台机器判成有问题却很少想到问题可能出在镜像从哪里取这条路上而不是出在机器本身。好消息是这一点官方给了明确说法。Vulhub 官方 README 的常见问题里第一条就是关于中国大陆的镜像拉取逐字引文见附表 A 第 2 行Docker Hub 在中国大陆可能无法访问可以使用镜像站加速或使用境外 VPS这句话有三层信息逐字读一遍就能拎出来。第一官方把这件事定性为可能无法访问——是可能性不是必然也不是一定不行。所以它不代表你必定卡在这里。第二官方把原因归到了镜像仓库可达性上而不是归到读者的机器上。这说明取不到和机器不行是两件事。第三官方给的是方向不是地址。原文只说可以使用镜像站加速或使用境外 VPS通篇没有给出任何具体镜像站的域名。2.2 两条方向本文只照抄不给地址官方给的两条方向本文原样转述不做展开、不做推荐、不做技术演练官方方向逐字要点本文的处理方式可以使用镜像站加速只写官方这句话不给任何具体镜像站的域名或地址官方原文未给本文也不给或使用境外 VPS只写官方这句话不展开任何网络配置做法这里必须把话说完整官方只说了可能无法访问并给了这两条方向各环境在中国大陆的实际可达性、某个镜像当前能不能拉取本文未实测逐字引文见附表 A 第 3 行。因此本文不给任何某某镜像一定拉得到或某某镜像一定拉不到的说法。具体到某一个环境目录镜像地址写在它自己的配置文件里——这也正是官方提醒每个环境目录下都包含详细的 README逐字引文见附表 A 第 4 行的用意总 README 没有统一镜像清单来源要看环境自己。2.3 读者能做的确认动作第一类问题读者自己能做的确认动作只有两步而且都不涉及任何网络配置的改动。第一步先确认本机有没有这个镜像。如果它本来就在本机那取不到这件事根本没发生问题一定不在第一类。第二步确认这次要用的镜像来源写在哪个文件里。进到那个环境自己的目录去看它自带的说明与配置文件——而不是拿总 README 去推。⚠️代码待验证# 确认动作一看本机保存的镜像清单dockerimages# 判断逻辑# 目标镜像在清单里 - 第一类可以直接排除去看第二类# 目标镜像不在清单里 - 才需要继续关心取不取得到# 注意本机没有该镜像不等于网络有问题也可能只是还没取过做到这一步就够了。第一类只需要判到要不要去远端取不需要接着往下猜是哪种网络原因——再往下就是本文不展开的部分了。本章可以带走的一句取不到镜像先分清是本机没有要取还是要去取但取不动官方把原因归在仓库可达性上不在你的机器上。三、第二类命令与前置条件3.1 Docker 装了没有第二类是三类里最该先查的一类因为它最便宜一句话就能问清楚。这里有一个非常常见的断层读者手里拿的是一份靶场的 README而 README 讲的是怎么启动这个靶场它未必会替你交代你这台机器有没有装 Docker。Vulhub 官方 README 在这点上做得比较直接它把安装命令写进了快速开始里逐字引文见附表 A 第 5 行curl -s https://get.docker.com/ | sh官方把它写进流程本身就说明了一件事这是前置条件不是可选项。如果你的机器上 Docker 还在不在都说不清那后面所有启动命令都只是在对着一个不存在的命令敲字。3.2 compose 用哪种写法确认了 Docker紧接着是第二条启动命令里的 compose写成哪一种。这件事在站内属于典型的历史遗留问题。Vulhub 官方 README 有一段非常明确的表述逐字引文见附表 A 第 6 行虽然所有 Vulhub 环境都基于 Docker compose 制作但你不再需要安装独立的 docker-compose而是使用 Docker 自带的 compose 命令来启动 Vulhub 环境。逐字读两层意思环境依然基于 compose 制作机制没变但启动它用的是Docker 自带的 compose 命令不再需要单独装一个独立的 compose。这不是版本号问题是命令从哪里来的问题。写法形态与官方当前口径的关系docker compose up -d空格——Docker 自带的 compose 子命令官方 README 里出现的写法docker-compose up -d连字符——需要独立安装的 compose 二进制官方说明不再需要安装独立的 docker-compose站内大量老教程写的还是连字符那一版那是旧的独立二进制写法官方现行走的是空格版。DVWA 官方 README 给的用法同样是空格写法clone → 进入DVWA目录 →docker compose up -d逐字引文见附表 A 第 7 行。两个项目在这一点上一致。3.3 读者能做的确认动作第二类的确认动作只有两条问句全部只读⚠️代码待验证# 确认动作一Docker 本体在不在认不认得docker--version# 确认动作二compose 这个子命令在不在dockercompose version# 判断逻辑# 两条都有正常回显 - 第二类的前半段过了# 任意一条没被识别 - 问题就在第二类与网络无关# 先回到官方的安装命令不要接着去折腾镜像别跳步很多人卡住时会直接跳到是不是网络问题然后花大量时间去试各种来源而真正的原因只是命令没被识别。先问这两句再谈别的。本章可以带走的一句先把 Docker 本体验证一遍再把 compose 的写法改成官方的空格版这两步过了第二类就基本排除。四、第二类续目录与权限4.1 官方为什么专门提这一条第二类里还有一条容易被忽略的前置官方单独列了出来逐字引文见附表 A 第 1 行请确保 Docker 有权限访问当前目录下所有文件这句话之所以重要是因为它指向的不是 Docker 本身而是 Docker 与当前目录之间的关系。这就带出第二类里第二个常被混掉的东西你站在哪个目录里敲命令。回到官方逐字命令逐字引文见附表 A 第 5 行git clone --depth 1 https://github.com/vulhub/vulhubgit clone这条命令的含义是把仓库取到你当前所在的目录下。所以当前目录取决于你敲命令时站在哪里而不是取决于仓库本身。Vulhub 的目录结构是按软件名 / CVE 编号组织的官方示例进的是vulhub/langflow/CVE-2025-3248逐字引文见附表 A 第 5 行——启动命令必须在那个环境自己的目录里执行在别处执行它找不着配置。4.2 权限与目录是同一件事的两面把 4.1 那条官方提醒翻成读者能用的判断就是两句问话我在哪——启动命令执行时当前目录是不是那个环境的目录它读得到吗——这个目录下的文件Docker 读得到吗这两句之所以要放在一起是因为它们经常被同一个动作同时搞坏把仓库 clone 到了一个位置然后换到别的地方敲命令或者目录里的文件归属不对Docker 读不到。官方的原话把落点写得很清楚是当前目录下所有文件。4.3 读者能做的确认动作⚠️代码待验证# 确认动作一我在哪个目录pwd# 确认动作二这个目录里有什么是不是那个环境自己的目录ls# 确认动作三看这些文件的归属与权限人工判断 Docker 是否读得到ls-l# 判断逻辑# 目录里有该环境自己的配置文件与说明 - 位置对了# 目录里空空如也或明显不是目标环境 - 位置不对# 先 cd 到正确目录再谈启动# 注意本文只做看不给任何改权限的做法本章可以带走的一句启动命令必须站在那个环境自己的目录里执行官方专门提醒当前目录下所有文件的访问权限说明这两件事是一起看的。五、第三类本机限制5.1 内存官方给了个下限前两类都过完之后才轮到第三类这台机器给不给得起它要的资源。这一类官方同样给了明确口径。Vulhub 官方 README 的注意事项第一条逐字引文见附表 A 第 1 行推荐使用至少 1GB 内存的 VPS 或虚拟机注意官方用的词是推荐不是一个硬性门槛——它给的是一条选机器时的参考线而不是一句低于这个数就一定不行。但这条线值得先看一眼因为它决定了第三类值不值得查下去。5.2 系统资源限制官方点名的 Kali 情形第三类里有一条特别贴合很多读者的实际情况。Vulhub 官方 README 的常见问题第三条逐字引文见附表 A 第 2 行Kali Linux部分环境因ulimit nofile过低失败这条的价值在于它把发行版差异和系统资源限制这两件事连了起来。同一套步骤在别的系统上顺利到了 Kali 上可能就卡住——原因不在命令也不在网络而在系统给进程的文件句柄上限。顺带说清一件事这三条常见问题里只有第一条属于本文的第一类镜像可达性第二条与平台架构有关本文只用一句交代第三条属于本节的第三类。三条同在一份常见问题里落点却不同。官方常见问题逐字要点落在本文哪一类本文的处理① Docker Hub 在中国大陆可能无法访问可以使用镜像站加速或使用境外 VPS第一类 网络与镜像仓库第二章讲过不给具体地址② Apple SiliconM 系列大部分环境可直接运行失败时可用export DOCKER_DEFAULT_PLATFORMlinux/amd64与平台架构有关本文只用一句若你怀疑是架构问题请看本号另一篇专门写架构的文章本文不展开③ Kali Linux 部分环境因ulimit nofile过低失败第三类 本机限制本节讲只做确认动作5.3 读者能做的确认动作第三类的确认动作同样只读看内存、看资源上限、看系统是哪一套。⚠️代码待验证# 确认动作一本机内存够不够官方推荐的那条线free-h# 确认动作二本机给进程的文件句柄上限是多少ulimit-n# 确认动作三我这是哪一套系统与架构uname-a# 判断逻辑# 内存明显低于 1GB 那条线 - 属于第三类先考虑换机器# 句柄上限偏低且系统是 Kali - 对上官方点名的情形# 系统或架构与文档不符 - 若怀疑架构问题见另一篇专文本章可以带走的一句第三类不用一开始就查但要给内存“资源上限”系统是哪一套各留一个位置——尤其系统是 Kali 的时候。完整版环境对照表这一章的三类问题分别落在哪判断法加上第二章的镜像来源说明、第三章的 compose 写法对照一起收进资料包扫码即可获取六、把三类对回官方的安装与启动命令6.1 官方逐字命令前三章分别处理三类问题这一章把它们对回同一条命令链。Vulhub 官方 README 的快速开始给了一串逐字命令本文照抄一个字不改逐字引文见附表 A 第 5 行⚠️代码待验证curl-shttps://get.docker.com/|shsystemctl startdockergitclone--depth1https://github.com/vulhub/vulhubcdvulhub/langflow/CVE-2025-3248dockercompose up-d# 官方同时给出的清理命令原文照抄本文不展开它删了什么dockercompose down-v6.2 每一条命令卡在哪一类把这条命令链拆开看每一行都对应着本文的某一类。这张表的作用是当你卡在某一步时能立刻知道该去查哪一类而不是三类一起怀疑。官方命令逐字它对应哪一类前置卡在这里先查什么curl -s https://get.docker.com/经管道交给sh第二类 前置条件Docker 本体装了没有systemctl start docker第二类 前置条件Docker 服务在不在、能不能起git clone --depth 1 https://github.com/vulhub/vulhub第二类 目录我当前在哪个目录仓库取到哪去了cd vulhub/langflow/CVE-2025-3248第二类 目录进的是不是那个环境自己的目录docker compose up -d第二类 命令写法 第一类 镜像来源写法是不是空格的官方版镜像本机有没有、要不要去远端取docker compose down -v—— 清理动作本文不展开三条命令细节值得单独拎出来说。第一cd那一行进的是vulhub/langflow/CVE-2025-3248这是官方给出的示例目录也说明 Vulhub 的目录按软件名 / CVE 编号组织。它练的是某个真实漏洞怎么复现——这与 DVWA、upload-labs 那种按漏洞类型分关卡的单一 Web 应用不是一回事逐字引文见附表 A 第 8 行。第二up -d里的-d是让它在后台跑。本文到此为止容器起来之后的事情是另一篇文章的范围。第三清理命令带了一个-v。本文只把它作为官方命令原文列出不展开清理流程。6.3 顺带复检一个官方数字既然是环境集合就会有人问它一共有多少个环境。Vulhub 官方提供了一个实时统计接口本文于2026-10-02访问复检成功返回{environments:333,stars:21309,forks:4812}——即截至 2026-10-02官方统计为 333 个环境。需要说明的是这是动态数字随时会变。台账核验日2026-09-16的取值为 330 个本次2026-10-02复检为 333 个。写任何环境数都必须带访问日期一个不带日期的数字过一阵子就不再成立。本章可以带走的一句把官方的命令链拆成六行每一行都指回一类问题卡在哪一行就查那一行对应的那一类。七、动手前的三类自检清单7.1 先把三类压成一句拉不动不是一个问题是三个取不到第一类、没敲对第二类、给不起第三类。这个形状不是本文造的是官方文档自己摆出来的官方在常见问题里把中国大陆的镜像拉取单列成一条说明它属于来源这一类官方明确不再需要安装独立的 docker-compose说明命令写法本身就是一个要过的关口官方专门提醒当前目录下所有文件的访问权限说明目录检查是启动前的固定动作官方还给了至少 1GB 内存这条参考线、并点名 Kali 上的资源限制说明机器本身也要看一眼。7.2 三类自检对照你看到的现象最可能属于哪一类这一类该看什么命令像是没被识别第二类 命令与前置条件Docker 装了没有、compose 写法对不对前面都正常取镜像时停住第一类 网络与镜像仓库镜像本机有没有、来源写在哪个文件里换了台机器同一套步骤就不同第三类 本机限制内存、资源上限、系统是哪一套命令跑在错误的目录里第二类 目录与权限当前目录是不是那个环境自己的目录系统是 Kali且部分环境起不来第三类 本机限制官方点名的ulimit nofile情形7.3 动手前三类自检清单⚠️代码待验证# 【三类自检清单 · 只看不改】# 第二类 命令与前置条件建议最先查最便宜# 1. docker --version 有正常回显吗# 2. docker compose version 有正常回显吗# 3. 启动命令用的是官方空格写法还是老教程的连字符写法# 4. pwd / ls我在那个环境自己的目录里吗# 第一类 网络与镜像仓库# 5. docker images目标镜像本机有没有# 6. 没有的话它的来源写在这个环境自己的哪个文件里# 第三类 本机限制# 7. free -h内存够不够官方推荐的那条线# 8. ulimit -n系统给进程的句柄上限是多少# 9. uname -a我这是哪一套系统与架构7.4 这份清单不覆盖什么第一不覆盖容器起来了却访问不到——本文范围严格限定在拉取、安装、启动之前的准备阶段到容器起来了就停那一类问题属于另一篇文章的范围。第二不覆盖平台架构差异——官方常见问题第二条与架构有关本文只用一句交代若怀疑是架构问题见本号另一篇专门写架构的文章。第三不覆盖中国大陆的实际可达性结论——官方只说 Docker Hub 在中国大陆可能无法访问本文未实测不给任何能不能拉到的结论也不给任何具体镜像站地址。第四不覆盖修复动作——三类只负责定位本文不给改配置、调网络、改权限的做法。第五本层不碰任何量级数字也不给任何具体报错文本、载荷与利用步骤。完整版环境对照表这份动手前三类自检清单加上第一章的三类问题对照表、第五章的官方常见问题分属表、第六章的官方命令链归属表一并收进资料包扫码即可获取本章可以带走的一句动手前把九条自检走一遍比卡住之后三类一起怀疑省事得多。附表 A本文引用事实与官方出处对照表#事实照口径一手出处含 URL核验日期本文位置1逐字注意事项①推荐使用至少1GB 内存的 VPS 或虚拟机②文档中的your-ip指你的主机/VPS IP不是 Docker 容器内部 IP③请确保 Docker 有权限访问当前目录下所有文件④部分环境可能不支持 ARM 架构⑤所有环境仅供测试与学习严禁用于生产环境Vulhub 官方 README中文— https://raw.githubusercontent.com/vulhub/vulhub/master/README.zh-cn.md2026-09-16第 4、5 章2逐字常见问题三条①Docker Hub 在中国大陆可能无法访问可以使用镜像站加速或使用境外 VPS②Apple SiliconM 系列大部分环境可直接运行失败时可用export DOCKER_DEFAULT_PLATFORMlinux/amd64③Kali Linux 部分环境因ulimit nofile过低失败同第 1 行常见问题2026-09-16第 2、5 章3未实测项Vulhub 各环境在中国大陆的实际可达性镜像能否拉取——官方只说Docker Hub 在中国大陆可能无法访问并给了两条方向本文未实测不写成结论官方未给任何具体镜像站地址本文也不给同第 1 行 本文未实测2026-09-16第 2、7 章4逐字每个环境目录下都包含详细的 README请参阅以了解复现步骤和使用说明。同第 1 行2026-09-16第 2 章5逐字命令序列curl -s https://get.docker.com/经管道交给sh→systemctl start docker→git clone --depth 1 https://github.com/vulhub/vulhub→cd vulhub/langflow/CVE-2025-3248→docker compose up -dvulhub/langflow/CVE-2025-3248为官方示例目录清理命令docker compose down -v同第 1 行快速开始2026-09-16第 3、4、6 章6逐字虽然所有 Vulhub 环境都基于 Docker compose 制作但你不再需要安装独立的 docker-compose而是使用 Docker 自带的 compose 命令来启动 Vulhub 环境。即官方现行为空格的docker compose站内老教程连字符的docker-compose是旧独立二进制写法同第 1 行前置条件2026-09-16第 3 章7DVWA 官方 Docker 用法clone → 进入DVWA目录 →docker compose up -dcompose.yml位于仓库根目录DVWA 官方 README「Docker」— https://raw.githubusercontent.com/digininja/DVWA/master/README.md2026-09-16第 3 章8逐字定位Vulhub 是一个开源的、即开即用的漏洞靶场环境集合。无需 Docker 基础只需一条命令即可快速启动用于安全研究、学习或演示的漏洞环境。与 DVWA / upload-labs 这类单一 Web 应用定位不同同第 1 行2026-09-16第 6 章9官方实时统计https://vulhub.org/api/statistic返回{environments:333,stars:21309,forks:4812}→截至 2026-10-02 官方统计 333 个环境台账核验日 2026-09-16 的取值为 330 个。动态数字必须带访问日期Vulhub 官方站点 API — https://vulhub.org/api/statistic2026-10-02本次复检成功原核验日 2026-09-16第 6 章10未实测项Vulhub 官方 README只说安装最新 Docker未给任何 Docker 或 compose 的最低版本号截至 2026-10-02 本文仍未核到官方版本号要求核验锚点为 2026-09-16——本文不写需要某版本以上同第 1 行逐条核对无对应表述 本文未实测2026-09-16第 3 章11逐字所有环境仅供测试与学习严禁用于生产环境本文合规口径的官方背书同第 1 行NOTE 块2026-09-16全篇合规口径附表 B术语速查表术语一句话解释镜像image容器运行所依据的模板本机没有就要从远端取镜像仓库存放镜像的远端官方注明 Docker Hub 在中国大陆可能无法访问拉取pull从远端把镜像取到本机的动作可达性这台机器能不能取到远端镜像官方未给可用性说明本文未实测Docker运行容器的引擎官方把它写进快速开始属前置条件docker compose空格写法Docker 自带的 compose 子命令官方现行口径docker-compose连字符写法需独立安装的 compose 二进制官方说明不再需要环境目录Vulhub 按软件名 / CVE 编号组织每个目录自带 README 与配置当前目录敲命令时所在的目录官方提醒 Docker 要能访问其下所有文件ulimit nofile系统给进程的文件句柄上限官方点名 Kali 上部分环境因它过低失败三类问题本文框架网络与镜像仓库 → 命令与前置条件 → 本机限制代码待验证本文标记该命令未在本机实际运行过写在最后这篇用到的资料写这篇时我把 Vulhub 官方 README 的快速开始、NOTE 块和常见问题逐字读了一遍又逐行核了那条命令链里每一步分别卡在哪一类问题上才确认拉不动要分三类看值得单独写一篇——顺手整理了几份配套的东西靶场镜像拉取三类自检清单网络 / 命令 / 本机三类各看什么、常见现象该落在哪一类靶场环境对照表DVWA、upload-labs 在 Windows / macOS / Linux 三平台的可行性与推荐路径Web 安全学习路线图从基础打牢到安全管理四个阶段各学什么常用靶场清单每个靶场练什么、适合哪个阶段资料是我自己整理的放在下面这个码上扫码即可获取添加时备注「靶场」优先通过。拿到之后建议先看三类自检清单那一份动手前把取不到、没敲对、给不起分开再回头查卡住的那一类。