我在 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 请求标头。
podman push
如果能看到生成的 http 请求的标头,以验证标头中是否存在持有者令牌,那就太好了。但是,考虑到错误,我假设它不存在。
两个问题:
- 如果我还没有持有令牌,该如何获取它?
我确实在我的 quay 组织中创建了一个 Oauth 应用程序并在那里生成了一个访问令牌 - 我能够在 curl 请求中成功使用它:
curl -X GET -H "Authorization: Bearer <mytoken>" https://quay.companydomain.com/api/v1/repository/organization/myrepository/tag/ | jq
该令牌能起作用吗podman push
?
- 一旦我有了令牌,如何将其包含在
podman push
命令的 http 请求中?
注意:我是从 github 操作启动它的,但为了简化事情,我只是尝试让它在命令行上工作(无论哪种方式我都会遇到相同的错误)。