当前位置:论坛首页 > BUG提交 > Linux面板

docker无法添加仓库和判断逻辑存在问题

发表在 BUG提交4 天前 [复制链接] 2 61

面板版本:Linux面板11.0.0

系统版本:OpenCloudOS 9.2 x86_64(Py3.7.16)

浏览器版本:

问题现象:
添加了一个docker仓库以后,再次添加同名的仓库时,出现键不存在的问题,报错信息如下:


出错了,面板运行时发生错误!KeyError: 'reg_url'
Traceback (most recent call last):  File "/www/server/panel/BTPanel/__init__.py", line 2539, in publicObject    res = run_obj.run(toObject, defs, get)  File "/www/server/panel/BTPanel/__init__.py", line 2486, in run    result = getattr(toObject, get.action)(get)  File "class/panelController.py", line 81, in model    result = PluginLoader.module_run(module_name,def_name,pdata)  File "/www/server/panel/class/btdockerModel/registryModel.py", line 48, in add    if r['reg_name'] == args.name and r["reg_url"] == args.registry and r['username'] == args.username:KeyError: 'reg_url'
重现方式:
1. 添加一个仓库
2. 再添加一个与刚才仓库同名的仓库

解决方式:
仓库列表中仓库地址的键是url,把/www/server/panel/class/btdockerModel/registryModel.py中48行和51行的r["reg_url"]都改为r["url"]以后就正常了
而且这个逻辑也有问题,从数据库中拿到的仓库列表中的用户名是经过加密的,在循环内是直接使用未加密的用户名跟加密的用户名进行比较,这样导致的就是仓库名、仓库地址、用户名三个信息都是一致的也会正常添加。经过实际测试确实如此





下载.png
使用道具 举报 只看该作者 回复
发表于 4 天前 | 显示全部楼层
还有一个问题,在使用“本地镜像-从仓库中拉取”功能时,选取自己手动添加的仓库,拉取指定镜像,仓库名会被拼接到命令中,导致不能成功拉取。是在/www/server/panel/class/btdockerModel/imageModel中478行中的代码拼接了仓库名(get.image = "{}/{}/{}:{}".format(get.registry, get.namespace, get.name, get.image))

Snipaste_2025-07-25_18-57-38.jpg



使用道具 举报 回复 支持 反对
发表于 4 天前 | 显示全部楼层
还有之前发过的这个问题:Docker仓库地址相同时无法分别拉取镜像(https://www.bt.cn/bbs/thread-147604-1-1.html)仍然存在,因为我添加的两个仓库地址都是相同的,而option组件中又是以url作为value的,导致选择其中一个时两个都被选中了。期待修复
使用道具 举报 回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

普通问题处理

论坛响应时间:72小时

问题处理方式:排队(仅解答)

工作时间:白班:9:00 - 18:00

紧急运维服务

响应时间:3分钟

问题处理方式:宝塔专家1对1服务

工作时间:工作日:9:00 - 18:30

宝塔专业团队为您解决服务器疑难问题

点击联系技术免费分析

工作时间:09:00至18:30

快速回复 返回顶部 返回列表