Podman 推送到码头导致“请求不记名令牌:来自注册表 400 的无效状态代码(错误请求)”

Podman 推送到码头导致“请求不记名令牌:来自注册表 400 的无效状态代码(错误请求)”

我在 Linux (RHEL8) 上尝试使用podman推送到内部码头注册表,但是当我执行 时,出现有关“不记名令牌”的错误podman push,如下所示:

podman login -u="quay_robot_username" -p="quay_robot_password" quay.companydomain.com
Login Succeeded!
podman push  f8f914cef1ce0cc6314355ae5d16c6d5faf96e595fa1332cf40d26f9c53b9c07   quay.companydomain.com/organization/repository/a890f2e
Getting image source signatures
Error: trying to reuse blob sha256:0c23ed2428e1ef41fdb571789f6968dd47c95135311b1c8bf56462c98581694b at destination: Requesting bearer token: invalid status code from registry 400 (Bad Request)

对于用户名和密码,我使用的是具有码头存储库写入权限的码头机器人。

我知道 quay 正在寻找Authorization: Bearer <mytoken>http 请求标头。

很高兴看到生成的 http 请求的标头,以podman push验证标头中是否存在不记名令牌。但是,考虑到错误,我假设它不存在。

两个问题:

  1. 如果我还没有不记名令牌,如何获得它?

我确实在我的码头组织中创建了一个 Oauth 应用程序,并在那里生成了一个访问令牌 - 我能够在curl 请求中成功使用它:

curl -X GET -H "Authorization: Bearer <mytoken>" https://quay.companydomain.com/api/v1/repository/organization/myrepository/tag/    | jq

该令牌适用于吗podman push

  1. 获得令牌后,如何将其包含在podman push命令的 http 请求中?

注意:我是从 github 操作启动它的,但为了简化事情,我只是试图让它在命令行上工作(无论哪种方式我都会得到相同的错误)。

相关内容