目录
【问题】执行sudo apt-get update后报错:无法安全地用该源进行更新,所以默认禁用该源。
2.(可选)设置用户组权限以免运行 Docker 命令时使用 sudo。
【问题3】如果配置完Git 的 HTTP 缓冲区大小依旧报错远程意外挂断,过早文件结束符
4.如果需要通过网络或通过不同的系统访问 CVAT,需要导出CVAT_HOST环境变量
下载最新的 CVAT 和其他所需的映像(例如 postgres、redis 和启动容器)。
【问题1】Get "https://registry-1.docker.io/v2/": context deadline exceeded
一、技术背景
CVAT 是一款功能丰富的开源数据标注工具,支持图像和视频的多种标注任务以及多样化的标签格式。特别值得一提的是,它还支持结合自定义模型进行自动化标注,极大地提升了效率。然而,在安装和部署过程中,CVAT 的复杂性及网络环境带来的问题成为了主要挑战。为了克服这些困难,我整理了相关经验,记录下整个部署过程,希望能为其他使用者提供参考。
二、安装教程以及可能出现的问题
本次使用的是ubuntu-20.04.4版本进行CVAT 的本地化部署。
官方代码库以及安装方式见
https://github.com/cvat-ai/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
第一次访问需要输入用户账号信息
输入之前创建的管理员账户的邮箱和密码

即可成功访问!




9428

被折叠的 条评论
为什么被折叠?



