Kali部署Vulfocus遇“服务器内部错误”排查与解决指南
1. 问题场景当Vulfocus在Kali上抛出“服务器内部错误”如果你和我一样习惯在Kali Linux上搭建渗透测试的靶场环境那么Vulfocus这个集成了大量漏洞靶场的开源项目绝对是个“心头好”。它基于Docker和Docker Compose一键拉起省去了我们一个个手动部署各种老旧、复杂漏洞环境的麻烦。但正是这种“一键化”的便捷有时也会带来一些隐蔽的坑。最近一次在全新的Kali 2024.1虚拟机上部署Vulfocus时我就遇到了一个典型的拦路虎访问Web管理界面输入默认账号密码登录后页面没有像往常一样跳转到靶场列表而是弹出了一个令人沮丧的提示——“服务器内部错误请联系管理员”。这个错误信息非常笼统它没有告诉你问题出在数据库连接、权限配置、还是容器内部服务崩溃。对于刚接触这个环境的新手或者对Docker生态不那么熟悉的朋友来说很容易就卡在这里感觉无从下手。实际上这个错误的根源十有八九出在环境初始化环节特别是数据库的初始化和连接上。接下来我就带你完整地走一遍复现、排查和解决的流程把这个问题彻底搞清楚。2. 环境准备与Vulfocus的常规部署流程在深入解决错误之前我们得先确保基础环境是干净的并且用正确的方式把Vulfocus跑起来。很多问题其实源于部署步骤的疏漏。2.1 Kali Linux基础环境配置首先确保你的Kali系统是最新状态。打开终端执行更新sudo apt update sudo apt upgrade -y接下来是安装Docker引擎和Docker Compose插件。在较新的Kali版本基于Debian 12 “Bookworm”中推荐使用官方仓库安装# 安装必要的依赖包 sudo apt install -y ca-certificates curl gnupg # 添加Docker官方GPG密钥 sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod ar /etc/apt/keyrings/docker.gpg # 设置Docker稳定版仓库 echo \ deb [arch$(dpkg --print-architecture) signed-by/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \ $(. /etc/os-release echo $VERSION_CODENAME) stable | \ sudo tee /etc/apt/sources.list.d/docker.list /dev/null # 安装Docker引擎、CLI、Containerd和Docker Compose插件 sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin安装完成后启动Docker服务并设置开机自启同时将当前用户加入docker组避免每次都要sudosudo systemctl enable --now docker sudo usermod -aG docker $USER注意执行usermod命令后你需要完全注销当前桌面会话并重新登录或者打开一个新的终端窗口用户组的变更才会生效。否则你会在执行docker ps时遇到“权限被拒绝”的错误。验证安装是否成功docker --version docker compose version如果两个命令都能正确输出版本号说明基础环境就绪。2.2 获取与启动VulfocusVulfocus的项目代码托管在GitHub上。我们将其克隆到本地git clone https://github.com/fofapro/vulfocus.git cd vulfocus项目根目录下有一个关键的docker-compose.yaml文件它定义了整个应用栈包括一个前端Web服务、一个后端API服务、一个MySQL数据库以及一个用于初始化的数据库容器。在首次启动前我强烈建议你先花一分钟浏览一下这个文件的结构这对接下来的排错至关重要。标准的启动命令是docker compose up -d这个-d参数代表“后台运行”。命令执行后Docker Compose会依次拉取镜像如果本地没有、创建网络、创建并启动容器。你可以用docker compose ps查看所有服务的状态理论上应该看到四个容器vulfocus-api,vulfocus-web,vulfocus-db,vulfocus-db-init的状态都是running。等待一两分钟让容器完全启动并完成初始化。然后在浏览器中访问http://你的Kali_IP:80。默认的登录账号是admin密码是admin。如果一切顺利你会看到Vulfocus的仪表盘。但我们的问题就出在这个“顺利”的环节。3. “服务器内部错误”的深度排查与根因分析当你输入账号密码点击登录却只得到“服务器内部错误”时不要慌张。这个错误是前端页面捕获到后端API返回了500状态码Internal Server Error后显示的通用提示。所以我们的排查重心必须放在后端服务尤其是API容器和数据库容器上。3.1 第一步查看容器日志定位错误源头Docker Compose提供了强大的日志查看功能。我们首先查看所有容器的综合日志寻找明显的错误信息docker compose logs如果输出太多可以着重查看API容器vulfocus-api和数据库初始化容器vulfocus-db-init的日志docker compose logs vulfocus-api docker compose logs vulfocus-db-init关键线索往往在这里出现。对于“服务器内部错误请联系管理员”这个问题你在vulfocus-api的日志中极有可能会看到类似下面这样的错误信息ERROR: [vulfocus-api] django.db.utils.OperationalError: (2003, Cant connect to MySQL server on vulfocus-db ([Errno 111] Connection refused))或者在vulfocus-db-init的日志中可能会看到MySQL初始化脚本执行失败的信息。这条错误信息非常明确后端API服务无法连接到名为vulfocus-db的MySQL数据库容器。连接被拒绝Connection refused通常意味着数据库服务没有在监听端口或者网络不通。3.2 第二步剖析Docker Compose网络与依赖关系为什么数据库连接会失败我们需要理解docker-compose.yaml中定义的服务启动顺序和健康检查。打开docker-compose.yaml你会看到类似下面的服务定义我做了精简和注释services: vulfocus-db: image: mysql:5.7 container_name: vulfocus-db # ... 环境变量数据库名、密码等 healthcheck: # 健康检查 test: [CMD, mysqladmin, ping, -h, localhost] interval: 10s timeout: 5s retries: 10 networks: - vulfocus-network vulfocus-db-init: image: mysql:5.7 container_name: vulfocus-db-init depends_on: vulfocus-db: condition: service_healthy # 关键等待db健康状态 # ... 环境变量和初始化脚本挂载 networks: - vulfocus-network command: [ sh, -c, sleep 10 mysql -hvulfocus-db -uroot -p$$MYSQL_ROOT_PASSWORD /docker-entrypoint-initdb.d/init.sql ] restart: no vulfocus-api: image: vulfocus/vulfocus-api:latest container_name: vulfocus-api depends_on: - vulfocus-db - vulfocus-db-init # 关键等待初始化完成 # ... 环境变量和端口映射 networks: - vulfocus-network这里有两个至关重要的设计健康检查Healthcheckvulfocus-db服务定义了一个健康检查它会定期执行mysqladmin ping来确认MySQL服务是否真的就绪而不仅仅是容器进程启动了。启动依赖条件condition: service_healthyvulfocus-db-init服务明确声明它依赖于vulfocus-db服务并且必须等待后者进入healthy健康状态才会启动。这确保了初始化脚本运行时数据库已经可以接受连接。服务依赖vulfocus-api服务依赖于vulfocus-db和vulfocus-db-init。这意味着API容器会在这两个容器启动之后才启动。那么问题可能出在哪里场景A数据库健康检查未通过如果vulfocus-db容器因为某种原因如配置文件错误、磁盘空间不足、端口冲突导致MySQL服务启动缓慢或失败健康检查会一直不通过。vulfocus-db-init就会一直等待直到超时或最终失败。而vulfocus-api虽然会在db-init之后启动但如果db-init因等待超时而失败退出API启动时数据库可能仍未就绪或者初始化数据不完整从而导致连接错误。场景B初始化脚本执行失败即使数据库健康了db-init容器开始执行init.sql脚本。如果这个SQL脚本存在语法错误或者试图创建已存在的数据库/用户会导致初始化失败。db-init容器会以非0状态码退出。虽然vulfocus-api仍然会启动但它连接到的可能是一个没有正确初始化表结构的空数据库在登录验证时查询用户表必然失败引发500错误。场景C网络配置问题虽然Docker Compose默认会为服务创建桥接网络并允许通过服务名互访但在某些复杂的宿主机网络环境下例如使用了特殊的防火墙规则或者Docker守护进程配置异常容器间通信仍可能受阻。3.3 第三步进入容器内部进行验证日志和配置分析给了我们方向现在需要进入容器内部进行验证这是定位问题的“金标准”。1. 检查数据库容器状态与连接首先进入数据库容器docker exec -it vulfocus-db bash在容器内登录MySQLmysql -uroot -p # 输入docker-compose.yaml中定义的MYSQL_ROOT_PASSWORD环境变量的值登录成功后查看数据库和表是否已创建SHOW DATABASES; USE vulfocus; SHOW TABLES;重点关注是否有user表或其他与用户认证相关的表。如果vulfocus数据库不存在或者里面是空的那肯定是初始化步骤失败了。2. 检查API容器内的连接配置进入API容器docker exec -it vulfocus-api sh在API容器内尝试用命令行工具测试到数据库的网络连通性和认证# 安装mysql客户端如果容器内没有 apk add --no-cache mysql-client # 如果容器基于Alpine # 或 apt update apt install -y mysql-client # 如果基于Debian # 测试连接 mysql -hvulfocus-db -uroot -p你的数据库root密码 -e SELECT 1;如果这条命令执行成功返回结果1说明从API容器到数据库的网络和基础认证是通的。如果失败会给出具体的错误信息如未知主机、连接被拒、访问被拒等这能进一步缩小问题范围。4. 针对性解决方案与实操步骤根据上述排查结果我们可以采取相应的解决措施。以下是针对不同根因的解决方案请按顺序尝试。4.1 方案一彻底清理并重建环境最有效这是解决大多数Docker Compose部署问题的一剂“猛药”尤其适用于首次部署失败或环境混乱的情况。它的原理是清除所有已有的容器、镜像可选、网络和数据卷从一个绝对干净的状态重新开始。# 1. 进入vulfocus项目目录 cd /path/to/vulfocus # 2. 停止并删除所有由当前docker-compose.yaml管理的容器、网络 docker compose down # 3. 可选但推荐删除相关的数据卷这会清除所有数据库数据 # 执行前请确认你是否需要保留旧数据。首次安装或测试环境可以删除。 docker volume rm $(docker volume ls -q | grep vulfocus) 2/dev/null || true # 4. 重新拉取最新镜像并启动 docker compose pull docker compose up -d为什么这招通常管用因为docker compose down不仅停止容器还会清理掉为这些服务创建的专属网络。重建时网络会重新以干净的状态建立。同时如果之前因为镜像层缓存或构建上下文问题导致镜像不完整pull可以确保获取到最新的稳定镜像。删除数据卷则确保了数据库初始化脚本 (init.sql) 能够在一个全新的数据库实例上无冲突地执行。重要提示docker volume rm操作是不可逆的会永久删除数据库中的所有数据。在生产环境或已存在重要靶场数据的测试环境中请务必谨慎可以先尝试不执行第3步。在测试环境我通常直接清理图个干净。4.2 方案二手动执行数据库初始化如果清理重建后问题依旧或者你不希望丢失其他数据可以尝试手动干预初始化过程。这适用于vulfocus-db-init容器执行失败的情况。首先确保vulfocus-db容器是健康且运行中的docker compose ps | grep vulfocus-db # 状态应为 “Up (healthy)”然后我们可以手动执行初始化脚本。先找到脚本位置通常在项目目录的scripts或config子目录下名为init.sql。如果找不到可以从vulfocus-db-init服务的配置中查看挂载路径。假设脚本在./config/init.sql。我们手动将其导入到已运行的数据库容器中# 方法将本地SQL文件复制到数据库容器内然后执行 docker cp ./config/init.sql vulfocus-db:/tmp/init.sql docker exec vulfocus-db sh -c mysql -uroot -p$MYSQL_ROOT_PASSWORD vulfocus /tmp/init.sql请注意你需要替换$MYSQL_ROOT_PASSWORD为实际密码或者直接从docker-compose.yaml文件中找到MYSQL_ROOT_PASSWORD环境变量的值。更安全的方式是# 查看数据库容器的环境变量中的密码假设容器名正确 docker exec vulfocus-db printenv | grep MYSQL_ROOT_PASSWORD # 记下密码比如是 MyStrongPassword123 # 然后执行导入 docker exec vulfocus-db mysql -uroot -pMyStrongPassword123 vulfocus /tmp/init.sql手动导入成功后重启API服务以使其重新连接并加载新的数据docker compose restart vulfocus-api4.3 方案三检查与调整宿主机系统资源在某些资源受限的环境如分配内存较小的虚拟机中MySQL可能因为内存不足而启动缓慢或不稳定导致健康检查超时。你可以从以下几个方面检查查看系统资源free -h docker stats --no-stream观察可用内存和容器内存占用情况。调整Docker资源限制如果是在虚拟机中运行Kali请确保为虚拟机分配了足够的内存建议至少4GB。对于Docker Desktop如果你在Kali上以某种方式运行了它也需要在设置中调整资源上限。调整健康检查参数作为临时解决方案你可以修改docker-compose.yaml中vulfocus-db的健康检查参数增加interval、timeout和retries给MySQL更多的启动时间。healthcheck: test: [CMD, mysqladmin, ping, -h, localhost] interval: 30s # 检查间隔从10秒增加到30秒 timeout: 10s # 超时从5秒增加到10秒 retries: 15 # 重试次数从10次增加到15次 start_period: 60s # 添加启动宽限期容器启动后60秒内不判定失败修改后执行docker compose up -d重新部署。4.4 方案四排查端口与网络冲突虽然Docker Compose网络隔离做得很好但极端情况下宿主机端口冲突也可能影响容器。确保Kali本地的80端口没有被其他Web服务器如Apache, Nginx占用sudo netstat -tulpn | grep :80如果被占用可以停止相关服务或者修改docker-compose.yaml中vulfocus-web服务的端口映射例如改为8080:80然后通过http://你的Kali_IP:8080访问。5. 部署后的验证与最佳实践建议在按照上述任一方案操作后如何确认问题已解决观察容器状态docker compose ps应显示所有四个服务状态为running且vulfocus-db的健康状态为healthy。查看关键日志docker compose logs vulfocus-db-init的末尾应该显示初始化SQL执行成功的提示没有错误信息。docker compose logs vulfocus-api在启动后不应再有数据库连接错误。功能验证浏览器无痕模式下访问Web界面使用admin/admin登录应成功跳转至仪表盘并能正常加载镜像列表。最后分享几个在Kali上长期稳定运行Vulfocus的实践心得资源预留给Kali虚拟机分配充足资源CPU 2核内存 4GB并为Docker引擎分配固定的内存和CPU限制避免资源争抢。定期维护定期使用docker system prune -a --volumes谨慎使用会清理所有未使用的镜像、容器、网络和卷来清理磁盘空间避免陈旧的镜像和缓存引发不可预知的问题。配置持久化理解docker-compose.yaml中数据卷的挂载点。对于vulfocus-db其数据通常通过卷持久化。如果需要备份或迁移备份对应的Docker卷是关键。关注项目更新Vulfocus项目本身也在迭代。偶尔关注一下GitHub仓库的Issues和更新日志你遇到的坑可能已有官方修复。在重大版本更新后采用“方案一”的彻底重建方式往往比在旧基础上修修补补更可靠。通过这样一套从现象到本质从排查到解决的完整流程相信你再遇到“服务器内部错误”时已经能够胸有成竹快速定位并解决问题了。记住在容器化的世界里日志、网络和状态是你的三大排错法宝。

相关新闻

氧化钇是什么?一种低调但重要的稀土功能材料

氧化钇是什么?一种低调但重要的稀土功能材料

提到稀土材料,很多人首先想到的是钕铁硼磁材、稀土永磁体等。但在稀土家族中,还有一些材料虽然不常被大众提及,却在工业和先进材料领域发挥着重要作用,**氧化钇(Y₂O₃)**就是其中之一。氧化钇是一种白色粉…

2026/10/15 20:31:52 阅读更多 →
用AI智能管理Obsidian知识库:从复杂部署到开箱即用的实践指南

用AI智能管理Obsidian知识库:从复杂部署到开箱即用的实践指南

你打开 Obsidian,看着里面上千条笔记、几十个文件夹、无数个链接关系,突然想找半年前写的一个关于“如何用 Python 处理时间序列异常值”的片段。你记得关键词,但具体在哪?是单独一篇笔记,还是某个项目笔记的附录&…

2026/10/4 20:31:23 阅读更多 →
网站建设进度表下载实用指南:项目经理必看的完美项目管理与团队协作文档模板免费下载

网站建设进度表下载实用指南:项目经理必看的完美项目管理与团队协作文档模板免费下载

作为一名在IT项目管理圈摸爬滚打了十几年的老兵,我见过太多因为进度失控而导致项目崩盘的真实案例。有些老板觉得做个网站不就是找几个人敲敲代码、画几张图的事儿吗?最多也就两三个月吧。结果呢?项目延期半年还在改Bug,预算超支300%,最后交出来的东西跟初衷简直是两码事。…

2026/10/16 22:49:57 阅读更多 →

最新新闻

无论最终选择海康 VisionMaster、Halcon,还是直接调用 SDK,第一步永远相同:让 PC 和相机“找到彼此”

无论最终选择海康 VisionMaster、Halcon,还是直接调用 SDK,第一步永远相同:让 PC 和相机“找到彼此”

无论最终选择海康 VisionMaster、Halcon,还是直接调用 SDK,第一步永远相同:让 PC 和相机“找到彼此”。这一步没走通,后面所有的算法、标定、通信都是空谈。 相机连接与 IP 配置:网口相机的“第一道门槛” GigE 相机与…

2026/10/17 2:35:38 阅读更多 →
传统视觉与深度学习视觉,本质上是“人定规则”与“机器学规则”的分野。两者不是替代关系,而是适用于不同问题域的工具

传统视觉与深度学习视觉,本质上是“人定规则”与“机器学规则”的分野。两者不是替代关系,而是适用于不同问题域的工具

传统视觉与深度学习视觉,本质上是**“人定规则”与“机器学规则”**的分野。两者不是替代关系,而是适用于不同问题域的工具。 核心差异总览维度传统视觉深度学习视觉规则来源人根据物理原理设计机器从数据中学习可解释性每一步透明可追溯黑箱&#xff0c…

2026/10/17 2:35:38 阅读更多 →
采图的本质,是**把相机传感器上的物理信号,通过一套标准化的“搬运规则”,变成上位机内存里可被算法消费的数据

采图的本质,是**把相机传感器上的物理信号,通过一套标准化的“搬运规则”,变成上位机内存里可被算法消费的数据

采图的本质,是把相机传感器上的物理信号,通过一套标准化的“搬运规则”,变成上位机内存里可被算法消费的数据。 无论用 VisionMaster、Halcon 还是直接调 SDK,底层都在做同一件事:触发 → 曝光 → 传输 → 缓冲 → 交付…

2026/10/17 2:35:38 阅读更多 →
UE5 MovieRenderQueue 渲染异常排查:条纹、黑块、幽灵球体与全黑帧根因解析

UE5 MovieRenderQueue 渲染异常排查:条纹、黑块、幽灵球体与全黑帧根因解析

简介:本资源是一份面向Unreal Engine 5中高级开发者与影视渲染工程师的实战型技术指南,聚焦MovieRenderQueue(MRQ)在实际项目中高频出现的渲染异常问题,如图像条纹、黑块、场景多出物体、全黑输出、相机偏移及着色器编…

2026/10/17 2:35:38 阅读更多 →
XERJ 搜索 Jupyter Notebook:按 Markdown 标题分区索引 .ipynb 与同目录 .py 文件

XERJ 搜索 Jupyter Notebook:按 Markdown 标题分区索引 .ipynb 与同目录 .py 文件

【免费下载链接】xerj XERJ is the new way for AI to search data. Its autoindex capability activates agents to know your data without the token waste of grep and sed. One command indexes code, docs, logs and PDFs for search, RAG, security audits and agent me…

2026/10/17 2:35:38 阅读更多 →
UGUI撞上DOTS:Canvas性能黑洞与ECS渲染管线重构

UGUI撞上DOTS:Canvas性能黑洞与ECS渲染管线重构

简介:UGUIDots 是一套面向数据技术栈(DOTS)的 UI 解决方案,专为希望在 Unity 中兼顾 UGUI 工作流与 ECS 性能的开发者设计。它并非替代 Unity 原生 UI,而是在其基础上扩充,让 UI 设计流程基本保持不变&…

2026/10/17 2:34:37 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →