利用 Ubuntu 部署CVAT以及过程中遇到的各种问题解决

目录

一、技术背景

二、安装教程以及可能出现的问题

1.Docker 和 Docker Compose的安装 

如果下载失败,请按照以下流程设置

检查git是否安装:

更换镜像源

换源中可能遇到的问题

【问题】执行sudo apt-get update后报错:无法安全地用该源进行更新,所以默认禁用该源。

解决方法

2.(可选)设置用户组权限以免运行 Docker 命令时使用 sudo。

3.使用git克隆CVAT的源代码

更换Docker镜像源:

克隆源代码

可能遇到的问题以及解决办法

【问题1】远程意外挂断,过早文件结束符

【问题2】执行sudo systemctl restart docker后报错Job for docker.service failed because the control process exited with error code

【问题3】如果配置完Git 的 HTTP 缓冲区大小依旧报错远程意外挂断,过早文件结束符

【问题4】无法连接到github.com

解决方法

检查网络连接

修改 DNS 配置

4.如果需要通过网络或通过不同的系统访问 CVAT,需要导出CVAT_HOST环境变量

5.运行 docker 容器。

下载最新的 CVAT 和其他所需的映像(例如 postgres、redis 和启动容器)。

可能出现的问题:

【问题1】Get "https://registry-1.docker.io/v2/": context deadline exceeded

【问题2】Get"https://registry-1.docker,io/v2/": net/http: request canceled while waiting for conection (client.Timout exceeded whilawaiting headers)

​编辑

【问题3】 Get “https://registry-1.docker.io/v2/”: dial tcp [2600:1f18:2148:bc01:571f:e759:a87a:2961]:443: connect: network is unreachable

6.创建一个管理员账户。


一、技术背景

        CVAT 是一款功能丰富的开源数据标注工具,支持图像和视频的多种标注任务以及多样化的标签格式。特别值得一提的是,它还支持结合自定义模型进行自动化标注,极大地提升了效率。然而,在安装和部署过程中,CVAT 的复杂性及网络环境带来的问题成为了主要挑战。为了克服这些困难,我整理了相关经验,记录下整个部署过程,希望能为其他使用者提供参考。

二、安装教程以及可能出现的问题

本次使用的是ubuntu-20.04.4版本进行CVAT 的本地化部署。

官方代码库以及安装方式见

        https://github.com/cvat-ai/cvat

        Installation Guide | CVAT

1.Docker 和 Docker Compose的安装 

如果之前已经在ubuntu上使用过Docker 和 Docker Compose的,输入以下代码检查是否成功安装

docker compose version

如果 Docker 已安装,系统会返回类似以下内容:

Docker version 24.0.1, build 1234567

接着检查Docker Compose是否安装

docker compose version

如果已安装,会返回类似以下内容:

Docker Compose version v2.12.2

 如果是第一次使用docker,需要在终端窗口中输入以下命令来安装 Docker 和 Docker Compose。

sudo apt-get update

sudo apt-get --no-install-recommends install -y \
  apt-transport-https \
  ca-certificates \
  curl \
  gnupg-agent \
  software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository \
  "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) \
  stable"

sudo apt-get update

sudo apt-get --no-install-recommends install -y \
  docker-ce docker-ce-cli containerd.io docker-compose-plugin

如果下载失败,请按照以下流程设置

检查git是否安装:
git --version

如果 Git 已安装,该命令会返回 Git 的版本信息。如果未安装 Git,你会看到类似 command not found 的错误消息。

如果没有安装 Git,你可以使用以下命令在 Ubuntu 上安装 Git:

sudo apt update 
sudo apt install git

如果安装失败,现进行换源操作(以下内容),然后再回来安装git

更换镜像源

备份当前的源文件,在更改之前,最好备份现有的源文件,以防需要恢复:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

输入以下命令,将文件中的内容替换成以下的系统源

sudo vim /etc/apt/sources.list #进入文本编辑器

i #输入i开启插入模式

Esc #退出插入模式

:wq #保存退出

这里我使用的是华为的ubuntu系统软件源:

deb https://repo.huaweicloud.com/ubuntu/ focal main restricted
deb https://repo.huaweicloud.com/ubuntu/ focal-updates main restricted
deb https://repo.huaweicloud.com/ubuntu/ focal universe
deb https://repo.huaweicloud.com/ubuntu/ focal-updates universe
deb https://repo.huaweicloud.com/ubuntu/ focal-backports main restricted universe
deb https://repo.huaweicloud.com/ubuntu/ focal-security main restricted
deb https://repo.huaweicloud.com/ubuntu/ focal-security universe

完成修改后,Esc保存文件并关闭编辑器。然后更新APT索引:

sudo apt update
sudo apt-get update

可以通过以下命令查看更新后的镜像:

cat /etc/apt/sources.list

效果:

换源完毕后,重新进行Docker下载(见安装教程第一点)

换源中可能遇到的问题
【问题】执行sudo apt-get update后报错:无法安全地用该源进行更新,所以默认禁用该源。
解决方法

关闭防火墙:

sudo ufw disable

查看当前防火墙的状态

sudo ufw status

效果

2.(可选)设置用户组权限以免运行 Docker 命令时使用 sudo

sudo groupadd docker

sudo usermod -aG docker $USER

设置完毕后,重新登录并输入groups就可以查看组中关联的用户

3.使用git克隆CVAT的源代码

更换Docker镜像源:

输入以下命令并将文件中的内容进行替换:

vi /etc/docker/daemon.json #进入编辑器

i #开启插入模式,替换文件内容为下面的代码

Esc #退出插入模式

:wq #保存退出
{ 
  "registry-mirrors" : 
    [ 
      "https://docker.m.daocloud.io", 
      "https://noohub.ru", 
      "https://huecker.io",
      "https://dockerhub.timeweb.cloud", 
      "https://registry.docker-cn.com"
    ] 
}

之后重新加载配置文件并重启docker

sudo systemctl daemon-reload
sudo systemctl restart docker

克隆源代码

执行以下命令,克隆CVAT源代码,

git clone https://github.com/cvat-ai/cvat
cd cvat

可能遇到的问题以及解决办法

【问题1】远程意外挂断,过早文件结束符

问题分析:Git 在推送或拉取大文件时出现的问题

解决方法:输入以下命令分别用于配置 Git 的 HTTP 缓冲区大小,并查看所有的 Git 配置信息

git config --global http.postBuffer 524288000
git config --list

效果:

配置完毕后重新尝试克隆源码

【问题2】执行sudo systemctl restart docker后报错Job for docker.service failed because the control process exited with error code

解决方法参考另一位老哥:解决docker启动报错:Job for docker.service failed because the control process exited with error code

【问题3】如果配置完Git 的 HTTP 缓冲区大小依旧报错远程意外挂断,过早文件结束符

关闭防火墙

详细操作请看:换源中可能遇到的问题

【问题4】无法连接到github.com

解决方法
检查网络连接

确保网络连接正常。可以尝试 ping GitHub 来检查是否可以连接到 GitHub 服务器:

ping github.com

如果没有响应,说明你的网络存在问题,需要检查网络连接。

修改 DNS 配置

输入以下命令更换DNS服务器

sudo vim /etc/resolv.conf

修改docker的daemon.json文件:

sudo vim /etc/docker/daemon.json
{
     "max-concurrent-downloads": 10,
     "max-concurrent-uploads": 5,
     "default-shm-size": "1G",
     "debug": true,
     "experimental": false,
  "registry-mirrors" :
    [
     "https://docker.m.daocloud.io",
     "https://noohub.ru",
     "https://huecker.io",
     "https://dockerhub.timeweb.cloud",
     "https://registry.docker-cn.com",
     "https://dockerhub.icu",
     "https://docker.chenby.cn",
     "https://x9r52uz5.mirror.aliyuncs.com",
     "https://dockerhub.icu",
     "https://docker.chenby.cn",
     "https://docker.1panel.live",
     "https://docker.awsl9527.cn",
     "https://docker.anyhub.us.kg",
     "https://dhub.kubesre.xyz"
    ]
}

之后重新加载配置文件并重启docker

sudo systemctl daemon-reload
sudo systemctl restart docker

说明:这个DNS的配置在完成克隆和下载后会自己修改回去

如果出现重启docker报错的情况,请参考本文中:2.执行sudo systemctl restart docker后报错Job for docker.service failed because the control process exited with error code

4.如果需要通过网络或通过不同的系统访问 CVAT,需要导出CVAT_HOST环境变量

export CVAT_HOST=FQDN_or_YOUR-IP-ADDRESS

5.运行 docker 容器。

下载最新的 CVAT 和其他所需的映像(例如 postgres、redis 和启动容器)。

运行以下代码下载CVAT:

docker compose up -d

此过程会消耗一定时间

成功后的效果:

可能出现的问题:

【问题1】Get "https://registry-1.docker.io/v2/": context deadline exceeded

解决方法:修改DNS服务器

参考本文中的 修改 DNS 配置

【问题2】Get"https://registry-1.docker,io/v2/": net/http: request canceled while waiting for conection (client.Timout exceeded whil
awaiting headers)

解决方法:配置临时代理

export http_proxy=http://your_proxy_ip:your_proxy_port
export https_proxy=http://your_proxy_ip:your_proxy_port

注意:这些更改仅在当前终端会话中有效,关闭终端后代理设置会失效。

【问题3】 Get “https://registry-1.docker.io/v2/”: dial tcp [2600:1f18:2148:bc01:571f:e759:a87a:2961]:443: connect: network is unreachable

问题分析:可能是网络环境中不支持 IPv6,Docker 会尝试通过 IPv6 地址连接 Docker Hub,导致失败。

解决方法:

临时禁用IPv6:

sysctl -w net.ipv6.conf.all.disable_ipv6=1  
sysctl -w net.ipv6.conf.default.disable_ipv6=1

配置Docker守护进程使用IPv4,打开Docker的配置文件/etc/docker/daemon.json,添加或修改以下内容:

{  
  "ipv6": false  
}

配置完毕后重启docker

sudo systemctl restart docker

最后再次执行docker compose up -d命令就好了

6.创建一个管理员账户。

管理员账户可以使用管理面板为用户分配正确的组。请使用以下命令:

docker exec -it cvat_server bash -ic 'python3 ~/manage.py createsuperuser'

此时需要输入管理员账号的密码和邮箱地址

效果:

7.外部访问CVAT

由于Google Chrome 是 CVAT 支持的唯一浏览器,所以在外部打开Google Chrome并输入:

虚拟机IP:8080

第一次访问需要输入用户账号信息

输入之前创建的管理员账户的邮箱和密码

即可成功访问!

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值