我正在尝试从Node.js中的Google Container Registry(gcr.io)获取可用图像及其标签的列表。
我首先使用google-auto- auth
来获取具有scope的令牌https://www.googleapis.com/auth/devstorage.read_write
,然后将该令牌交换为gcr.io
令牌,如下所示:
axios.get('https://gcr.io/v2/token?service=gcr.io', {
auth: {
username: '_token',
password: token // token I got from `google-auto-auth`
}
})
然后,我尝试使用此方法来调用v2/_catalog
端点:
axios.get('https://gcr.io/v2/_catalog', {
headers: {
Authorization: `Bearer ${gcrToken}`
}
})
我得到以下错误:
{
errors: [ { code: 'DENIED', message: 'Failed to retrieve projects.' } ]
}
足够公平,它必须提供我的项目ID,但是我应该在哪里提供呢?
只是为了看看我是否还能使其他任何东西正常工作,我尝试了:
axios.get('https://gcr.io/v2/my-project-id/my-image/tags/list', {
headers: {
Authorization: `Bearer ${gcrToken}`
}
})
我得到以下信息:
{
errors: [
{
code: 'NAME_INVALID',
message: 'Requested repository does not match bearer token resource: my-project-id/my-image'
}
]
}
如何从gcr.io读取图像信息?
在与GCR的乔恩·约翰逊(Jon
Johnson)进行广泛交流之后,我们终于弄清楚了哪里出了问题。如果您赞成这个答案,请也赞成乔恩(Jon’s),他超越了这一点,以解决此问题。
截止本文撰写之时,其中大部分内容尚未记录在案。
registry:catalog:*
范围。us.gcr.io
,并将它们视为单独的注册表-我认为它们是镜子。Project Viewer
在Google Cloud IAM中具有角色。Basic base64(_token:<token>)
,但Google Cloud令牌可以使用。获取GCR令牌
// Updated host
axios.get('https://us.gcr.io/v2/token?service=gcr.io', {
params: {
service: 'us.gcr.io',
scope: `registry:catalog:*`
},
auth: {
username: '_token',
password: token // token I got from `google-auto-auth`
},
})
使用令牌列出存储库
const client = axios.create({
baseURL: `https://us.gcr.io/v2`,
headers: {
Authorization: `Bearer ${token}`
}
})
client.get('/_catalog').then((response) => {
console.log(response.data.repositories)
})
如何使用CLI(首选)或curl列出远程Docker注册表上Docker图像的所有标记? 最好不从远程注册表中提取所有版本。我只想列出标签。
问题内容: 我运行了一个私有Docker注册表,我想从存储库中删除除之外的所有图像。我不想删除整个存储库,仅删除其中的一些图像。该API文档不提一个办法做到这一点,但肯定这是可能的? 问题答案: 当前,您无法将注册表API用于该任务。它仅允许您删除存储库或特定标签。 通常,删除存储库意味着删除与此仓库关联的所有标签。 删除标签意味着删除图像和标签之间的关联。 以上所有都不删除单个图像。它们留在您的
问题内容: 我正在使用docker Registry v1,并且有兴趣迁移到较新的版本v2。但是我需要某种方式来获取注册表中存在的图像列表。例如,对于注册表v1,我可以执行GET请求,结果是: 但是我在官方文档中找不到类似于在注册表中获取映像列表的内容。有人知道在新版本v2上执行此操作的方法吗? 问题答案: 对于最新(截至2015年7月31 日)的Registry V2版本,您可以从DockerH
问题内容: 将图像推送到Amazon ECR时,如果该代码已存在于存储库中,则旧图像仍保留在注册表中,但处于未标记状态。 因此,如果我第二次泊坞窗推入,我会这样做(前提是发生了某些变化),因此第一张图像不会被标记。 有没有一种方法可以安全地清除未标记图像中的所有注册表? 问题答案: 我实际上伪造了一线解决方案 它正在做什么: 获取所有存储库 为每个存储库给我所有图像 对于每个图像和存储库,发出一个
问题内容: 我做了一个私人注册表,curl xx.xx.xx.xx:5000还可以。我通过执行以下操作将映像推送到docker私有注册表中: 返回: 问题是如何从注册表网站或命令中获取所有图像。我无法从Docker Registry API找到任何信息。有人帮忙吗?:) 问题答案: 从私有注册表 v 0.7.0开始,您可以执行以下操作: 然后您将获得一个json负载: 提供更多背景信息,这是我启动