12

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

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

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

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

4

2 回答 2

8

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

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

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

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

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

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

Docker Hub 支持 Access Token
gotoAccount Settings > Security

与 Github 个人访问令牌 (PAT) 相同

您可以使用此令牌代替实际密码

于 2020-05-13T10:09:18.433 回答