我在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 。无论如何,这需要某种形式的持久性身份验证存储在concourse服务器中,并且当前Dockerhub不支持CI访问 token la github

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

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

  • ,您可以使用 --load-vars-from 来保护您的凭据,防止它们保存在您的管道中,将其存储在其他地方(LastPass,本地文件等)。
  • ,您也许可以在Dockerhub上创建一个用户,该用户仅有权访问要推送的特定存储库,如果可以,可以使用“CI bot用户”。
  • 10-07 18:41