authentication - Dockerhub 的访问 token

标签 authentication docker docker-registry concourse

我在 hub.docker.com 上创建了一个存储库,现在想使用我的凭据将我的图像推送到 Dockerhub。我想知道是否必须使用我的用户名和密码,或者是否可以创建某种访问 token 来推送 docker 镜像。

我想做的是使用 Concourse 中的 docker-image 资源将图像推送到 Dockerhub。因此,我必须配置如下凭据:

type: docker-image
source:
  email: {{docker-hub-email}}
  username: {{docker-hub-username}}
  password: {{docker-hub-password}}
  repository: {{docker-hub-image-dummy-resource}}

我不想为此使用我的 Dockerhub 密码。

最佳答案

简而言之,你不能。有一些解决方案可能会吸引您,但首先知道这是结构性原因可能会让您放心:

资源通过它们的 sourceparams 进行配置,它们在管道级别(在您的 yml 文件中)定义。必须在此处定义任何身份验证信息,因为无法从构建中的较早步骤获取信息到 get 步骤(它没有输入)。

由于不记名 token 通常在“不那么长”(即几小时或几天)后超时,DockerHub token 也是如此,因此每次构建运行时,concourse 实例都需要能够从身份验证服务获取新 token 如有必要。无论如何,这需要某种形式的持久身份验证存储在大厅服务器中,目前 Dockerhub 不支持 CI 访问 token ,例如 github .

也就是说,您需要以一种或另一种方式向 Concourse 提供用户名和密码。

如果您担心安全问题,您最有可能采取一些措施来降低风险:

  • 您可以使用 --load-vars-from保护您的凭据不被保存在您的管道中,将它们存储在其他地方(LastPass、本地文件等)。
  • 您也许可以在 Dockerhub 上创建一个用户,该用户只能访问您要推送的特定存储库,如果您愿意,可以创建一个“CI bot 用户”。

关于authentication - Dockerhub 的访问 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41834554/

相关文章:

asp.net-mvc - ASP.NET MVC 如何使用 CookieAuthenticationMiddleware 在内部验证 Cookie

postgresql - Docker,在包含 "ubuntu:14.04"的容器中安装 postgresql,离开容器时丢失

docker - Drone CI - docker 插件 - 解析错误。为什么无人机无法解析?

docker - 我们如何使用 Chef Recipe 登录到 docker hub(私有(private)注册表)?

docker - docker push时无效的URL转义 “%”

c# - 使用 Azure 在 OpenIdConnect 中实现滑动过期

C# Jwt token 生成失败 asp.net 核心 2.2

azure - https ://graph. microsoft.com/v1.0/me 对于我以外的其他用户返回 403

docker - Dockerfile 中的 'COPY' 和 'ADD' 命令有什么区别?

docker - 如何创建仅在centos上运行的docker centos镜像