
1. WSLwindows系统需要是10或11的。打开Windows PowerShell管理员身份运行开启Linux子系统 dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart开启虚拟化功能dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart打开终端打开Windows PowerShell输入wsl。2. 下载Ubuntu系统包下载安装打开Windows PowerShell输入wsl --set-default-version 2若显示需要更新则更新设置用户名(支持小写、数字、-)、密码(不会有任何显示直接输入按回车)3. 安装dockerdocker网址直接下一步安装完成后需要重启配置1设置-Resources-WSL integration将Enable前的方框勾上Ubuntu打开。2Docker Engine{“builder”: {“gc”: {“defaultKeepStorage”: “20GB”,“enabled”: true}},“experimental”: false,“registry-mirrors”: [“https://docker.m.daocloud.io”,“https://docker.nju.edu.cn”,“https://docker.mirrors.sjtug.sjtu.edu.cn”]}4. CVAT配置git网址安装git确定代码路径进入路径后右键-在终端打开克隆CVAT代码git clone https://github.com/cvat-ai/cvat到cvat路径右键-在终端打开拉取docker compose pull运行docker compose up -d创建超级管理员docker exec -it cvat_server bash -ic ‘python3 ~/manage.py createsuperuser’输入用户名邮箱密码浏览器输入localhost:8080若关了终端打开如上 到cvat路径右键-在终端打开需关掉镜像docker compose down不然会在内存里一直占空间。使用docker compose down仍有Network cvat_cvat Resource is still in use显示操作# 可以使用 WSL 终端中执行以下命令# 1.查看是谁占用了网络dockernetwork inspect cvat_cvat# 你会看到输出末尾有一个 Containers 字段里面会列出所有还在使用该网络的容器 ID 和名称。把这些容器名称记下来比如你可能看到了 nuclio、nuclio-test 或 cvat_ui 等。# 2.强制删除占用网络的容器# 把 容器名 替换为实际名称如果有多个就都删掉dockerrm-f容器名# 例docker rm -f nuclio# 3.重新执行 docker compose down启动如上 到cvat路径右键-在终端打开docker compose up -d5. 智能标注配置1. nuctl 查看与安装查看CVAT在安装时已开启对“无服务器函数 (Serverless Functions)”的支持。1在 CVAT 的根目录下运行 docker compose ps 命令查看正在运行的容器列表。2在终端中执行 nuctl get functions。3登录 CVAT 后进入一个标注任务。如果在界面中能看到 “AI Tools” 或类似的自动标注功能选项并能选择如 Mask R-CNN、YOLO 等模型这通常意味着无服务器功能已就绪。先停止容器运行开启对“无服务器函数 (Serverless Functions)”的支持docker compose-f docker-compose.yml-f components/serverless/docker-compose.serverless.yml up-dnuctl 是管理和部署无服务器函数的命令行工具。下载nuctl 链接。关键点是下载的版本号必须与你的 docker-compose.serverless.yml 文件中定义的版本相匹配。下载方式二在 WSL 终端中使用 wget 下载与你的 CPU 架构匹配的 Linux 二进制文件。wgethttps://github.com/nuclio/nuclio/releases/download/1.13.0/nuctl-1.13.0-linux-amd64打开 WSL 终端点击Ubuntu。安装nuctl1 nuctl 是安装在 WSL 子系统内部的 Linux 工具而非 Windows 系统。2由于我的nuctl是通过windows下载CVAT 项目源码是放在 Windows 文件系统所以将nuctl复制到 WSL 的家目录下的 bin 文件夹。# 在 WSL 中创建目录mkdir-p~/bin# 从 Windows 复制到 WSL在 WSL 终端执行cp/mnt/c/Downloads/nuctl-1.13.0-linux-amd64 ~/bin/# 安装赋予权限 建立软链接cd~/binsudochmodx nuctl-1.13.0-linux-amd64sudoln-sf$(pwd)/nuctl-1.13.0-linux-amd64 /usr/local/bin/nuctl验证安装# 检查版本nuctl version# 列出函数nuctl get functions部署CVAT 的函数# 1.在 WSL 中进入 Windows 下的 CVAT 项目目录cd/mnt/c/cvat# 如果你的项目在 C:\cvat# 2.确保 Docker 容器已启动使用 -f 参数加载 serverless 配置# 1 先停止当前的 CVATdockercompose down# 2 用包含 serverless 的新配置重新启动dockercompose-fdocker-compose.yml-fcomponents/serverless/docker-compose.serverless.yml up-d# 3. 查看所有正在运行的容器dockerps验证“CVAT Serverless” 是否都“打开”了1在浏览器访问 CVAThttp://localhost:8080能打开说明 CVAT 启动了。2在浏览器访问 Nuclio 面板http://localhost:8070能打开这个新地址说明无服务器功能组件成功启动了。 结果1.http://localhost:8080可以打开但是显示Could not get models from the server。2.http://localhost:8070打不开排查与修复# 1.打开 WSL 终端执行以下命令看看有没有 Nuclio 相关的容器dockerps|grepnuclio# 结果有# 2. 查看 Nuclio 容器的日志# 先通过以下命令找到 CONTAINER IDdockerps-a|grepnuclio# 然后查看日志将 CONTAINER_ID 替换为实际的dockerlogs CONTAINER_ID# 结果显示错误从日志看问题的根源非常明确Nuclio 容器无法拉取所需的依赖镜像 gcr.io/iguazio/alpine:3.20因为你的网络环境无法直接访问 Google 的容器镜像仓库gcr.io。这导致 Nuclio 启动失败进而 8070 端口打不开。# 3. 解决方法手动拉取并打标签在 WSL 终端中执行# 1 从 Docker Hub 拉取 alpine:3.20dockerpull alpine:3.20# 2 打标签为 gcr.io 所需的名称dockertag alpine:3.20 gcr.io/iguazio/alpine:3.20# 结果镜像拉取问题已经解决http://localhost:8070还是打不开再次查看 Nuclio 容器的日志显示问题出在了端口映射或Nuclio 服务本身的监听配置上。排查与修复# 1. 检查 Docker 端口映射是否正确# 在 WSL 终端中运行以下命令看看 Nuclio 容器是否把 8070 端口映射到了宿主机dockerps--filternamenuclio--formattable {{.Names}}\t{{.Ports}}# 运行 docker ps 的结果来看Nuclio 容器没有将 8070 端口映射到宿主机只显示了 80/tcp。解决方法打开 components/serverless/docker-compose.serverless.yml 文件找到 nuclio 服务定义确认 ports 部分是否有以下内容services:nuclio:ports:-8070:8070# 这个必须存在-8071:8071# 可选内部调试端口结果加入端口后http://localhost:8070可以打开。2. 查看NVIDIA Container Toolkit是否安装对于Ubuntu 系统输入sudodpkg-l|grepnvidia-container-toolkit结果未输入任何东西。说明系统没有通过 dpkg 包管理器安装 NVIDIA Container Toolkit。安装nvidia-container-toolkit对于 Ubuntu 系统# 1.配置官方软件源curl-fsSLhttps://nvidia.github.io/libnvidia-container/gpgkey|sudogpg--dearmor-o/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg\curl-s-Lhttps://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list|\seds#deb https://#deb [signed-by/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g|\sudotee/etc/apt/sources.list.d/nvidia-container-toolkit.list# 2.更新软件包列表并安装sudoapt-getupdatesudoapt-getinstall-ynvidia-container-toolkit安装完成后需要配置Docker使用NVIDIA Container Toolkit作为运行时。sudonvidia-ctk runtime configure--runtimedocker结果报错Failed to restart docker.service: Unit docker.service not found.但是已经安装docker了。说明通过 systemctl 命令无法找到 Docker 的服务单元文件docker.service。即使 docker 命令本身可用也可能因为安装方式或软件包来源不同导致服务未能正确注册。重新安装docker 。这是最规范的方式安装后 systemctl 会自动生效后续管理升级、卸载也最简单。# 1.彻底卸载当前的二进制 Dockersudorm-f/usr/bin/docker* /usr/bin/containerd* /usr/bin/runc /usr/bin/ctrsudorm-rf/var/lib/dockersudorm-rf/etc/docker# 2.配置官方源并安装Ubuntu/Debian 命令# 安装依赖工具sudoaptupdatesudoaptinstallca-certificatescurlgnupg lsb-release-y# 添加 Docker 官方 GPG 密钥和软件源sudomkdir-p/etc/apt/keyringscurl-fsSLhttps://download.docker.com/linux/ubuntu/gpg|sudogpg--dearmor-o/etc/apt/keyrings/docker.gpgechodeb [arch$(dpkg --print-architecture)signed-by/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu$(lsb_release-cs)stable|sudotee/etc/apt/sources.list.d/docker.list/dev/null# 使用中科大镜像加速器无需注册公开可用sudomkdir-p/etc/dockersudotee/etc/docker/daemon.json-EOF { registry-mirrors: [ https://docker.mirrors.ustc.edu.cn, https://hub-mirror.c.163.com ] } EOF# 安装 Docker CEsudoaptupdatesudoaptinstalldocker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin-y# 3.启动并验证sudosystemctl startdockersudosystemctlenabledockersudodockerrun hello-world 结果成功安装 NVIDIA Container Toolkit# 1. 添加 NVIDIA 官方 GPG 密钥使用国内镜像加速curl-fsSLhttps://nvidia.github.io/libnvidia-container/gpgkey|sudogpg--dearmor-o/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg# 2. 添加软件源使用国内镜像提升下载速度curl-s-Lhttps://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list|\seds#deb https://#deb [signed-by/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g|\sudotee/etc/apt/sources.list.d/nvidia-container-toolkit.list# 3. 更新并安装sudoapt-getupdatesudoapt-getinstall-ynvidia-container-toolkit配置 Docker 运行时# 配置 Docker 使用 NVIDIA 运行时sudonvidia-ctk runtime configure--runtimedocker# 重启 Docker 服务sudosystemctl restartdocker验证 GPU 可用性sudodockerrun--rm--gpusall nvidia/cuda:11.8.0-base-ubuntu22.04 nvidia-smi结果成功输出显卡信息。3. 集成SAM在…/cvat/serverless目录下输入./deploy_gpu.sh pytorch/facebookresearch/sam/nuclio/报错gcr.io/iguazio/uhttpc:0.0.3-amd64拉取不下来且一直拉取不了。解决方法使用如下拉取成功。dockerpull gcr.m.daocloud.io/iguazio/uhttpc:0.0.3-amd64# 在 WSL 终端中给镜像打标签dockertag gcr.m.daocloud.io/iguazio/uhttpc:0.0.3-amd64 gcr.io/iguazio/uhttpc:0.0.3-amd64# 验证标签是否成功dockerimages|grepuhttpc下载成功后还是会优先拉取没有使用本地的镜像需要设置优先使用本地镜像由于nuctl 版本为 1.16.3版本较低不支持–pull-policy 参数。修改 cvat/serverless/deploy_gpu.sh 脚本在 nuctl deploy 命令中最后一行添加 --no-pull 参数。遇到的 pip install torch 下载超时问题将 pip 的下载源切换为国内镜像源如清华、阿里、华为等。在运行部署脚本前设置 pip 的环境变量使其在构建时使用国内源。exportPIP_INDEX_URLhttps://pypi.tuna.tsinghua.edu.cn/simpleexportPIP_TRUSTED_HOSTpypi.tuna.tsinghua.edu.cn ./deploy_gpu.sh pytorch/facebookresearch/sam/nuclio/SAM部署成功。但pth-facebookresearch-sam-vit-h关不了每次从docker删除后都要重新拉取。在/mnt/d/skye/MFT/AIPlatform/code/test01/cvat/serverless下。./deploy_gpu.sh pytorch/facebookresearch/sam/nuclio/