加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何在Codefresh私有注册表中列出Docker镜像?

发布时间:2020-12-16 03:29:42 所属栏目:安全 来源:网络整理
导读:我目前正在使用Codefreshs free private registry来存储我的图像.我正在使用CircleCI作为我的Docker构建,所以从那里我使用docker登录,所以我可以推送到Codefresh注册表.这很好用.但是,Codefresh仅在其Web应用程序中列出了它为其构建的图像,因此我无法轻松查

我目前正在使用Codefresh’s free private registry来存储我的图像.我正在使用CircleCI作为我的Docker构建,所以从那里我使用docker登录,所以我可以推送到Codefresh注册表.这很好用.但是,Codefresh仅在其Web应用程序中列出了它为其构建的图像,因此我无法轻松查看它们的目录.我怀疑这是设计的,所以用户坚持使用Codefresh进行CI.但是,如果可能的话,我想列出我在注册表中的图像.

我假设此注册表是标准Docker Registry的基本v2版本.所以,我有一个狩猎,found this console utility管理图像.但是,它似乎对我不起作用.我不知道这是否是因为注册管理工具一般还不成熟(网络搜索表明它们之后被添加了很多,并且有很多人为这个简单的任务做了大量工作)或者是否有不寻常的事情Codefresh.

这是我正在尝试的:

reg -d -r r.cfcr.io -u myusername -p cfaccesstoken

(-d用于调试).

这导致:

2017/10/18 11:24:43 registry.ping url=https://r.cfcr.io/v2/
2017/10/18 11:24:44 registry.catalog url=https://r.cfcr.io/v2/_catalog
2017/10/18 11:25:53 registry.catalog url=https://r.cfcr.iohttps://r.cfcr.io/v2/_catalog?n=1000&last=davigsantos/davigsantos/codeflix
FATA[0075] Get https://r.cfcr.iohttps//r.cfcr.io/v2/_catalog?n=1000&last=davigsantos/davigsantos/codeflix: dial tcp: lookup r.cfcr.iohttps on 127.0.1.1:53: no such host 

倒数第二行包含一个我不认识的容器名称 – 我希望它是公共的,而不是我不应该看到的!

最后一行表示某种致命错误,各种各样的URL片段以绝对不可行的方式混合在一起.

我还发现删除访问令牌没有区别;输出完全相同:

reg -d -r r.cfcr.io -u myusername

我还能尝试什么?我正在运行Mint Linux,如果有必要,可以更换为另一个实用程序.发出此命令的方式有问题,或者Codefresh是否运行与标准API调用不兼容的非标准注册表?

更新

它看起来像Codefresh also has their own API,尽管据我所知,它似乎没有记录.运行get操作会产生以下错误:

Failed to authenticate request because no token was provided

这是令人鼓舞的,所以我将尝试找出如何在卷曲调用中提供令牌; Swagger Web界面似乎不允许它.但是我意识到,如果我能使API工作,它可能无法列出我的Docker图像,因为它们不是由Codefresh构建的.

更新2

我在Codefresh博客上发现了一些文章,提示如何在API上进行身份验证,格式是标题:

--header "x-access-token: (token)"

但是我收到此错误:

{“status”:401,”code”:”2401″,”name”:”UNAUTHORIZED_ERROR”,”message”:”Failed to authenticate request because token is not valid”,”context”:{}}

我正在使用的令牌与我用于docker登录的令牌相同,这有效.我注意到我没有指定我的用户名,所以我也添加了这个curl选项:

-u (user):(token)

正如你所看到的,我现在接近尝试随机的东西,因为似乎没有在线官方帮助.

更新3

下面的评论提示,似乎Docker在使用登录后在?/ .docker / config.json中维护一个访问令牌.

因此我尝试了这个:

reg -d -r r.cfcr.io -u myusername -p dockeraccesstoken

(注意cfaccesstoken如何更改为dockeraccesstoken).

现在返回的速度要快得多(而不是挂起),但不返回任何内容:

2017/10/24 10:56:16 registry.ping url=https://r.cfcr.io/v2/
2017/10/24 10:56:18 registry.catalog url=https://r.cfcr.io/v2/_catalog
Repositories for r.cfcr.io
最佳答案
您需要首先在CodeFresh用户设置上生成令牌

Docker token

接下来我将向您展示如何从终端登录

curl -H 'Host: r.cfcr.io' -H 'User-Agent: ItsMe' -H 'Authorization: Basic 

你可以得到< AUTH>通过运行

echo 

这将给你一个很大的标记

{"expires_in":43200,"issued_at":"2017-10-24T03:34:54.118390368-07:00","token":"APMm...P91"}%

现在,您可以使用该令牌进行docker API调用

$curl -IH 'Host: r.cfcr.io' -H 'User-Agent: ItsMe' -H 'Authorization: Bearer APMm+...aRL' -X HEAD 'https://r.cfcr.io/v2/

对于注册表搜索访问,下面应该有效

curl -H ‘Host: r.cfcr.io’ -H ‘User-Agent: ItsMe’ -H ‘Authorization: Basic ‘ –compressed ‘07001’

但它没有,也没有注册表:catalog:*用于范围.这就像用盲目的褶皱撞击目标,甚至不知道我们站在哪个方向.您最好的选择是让他们向您披露一些信息

编辑-1:获取目录

所以我终于设法破解它,但结果有点不幸.我最终获得了每个用户的目录/存储库.我检查过,你仍然无法拉回那些回购.所以他们的码头图像是安全的.这些看起来像这样:

EveryRepo

编辑-2:获取所有回购

在我们通知Codefresh这种情况之后,这里是如何进行获取的.首先需要使用以下内容生成令牌:

curl -H 'Host: r.cfcr.io' -H 'User-Agent: MyAgent' -H 'Authorization: Basic .....' --compressed 'https://r.cfcr.io/v2/token?account=

然后使用相同的我们可以查询完整的目录:

curl -H "User-Agent: ItsMe" -H 'Authorization: Bearer 

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读