我在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密码。
最佳答案
简而言之,你不能。有一些解决方案可能会吸引您,但是首先知道这有结构性的原因可能会让您放心。
资源是通过它们的source
和params
配置的,它们在管道级别(在yml文件中)定义。必须在此处定义任何身份验证信息,因为无法从构建的较早步骤将信息获取到get
步骤(它没有输入)。
由于承载 token 通常在“不那么长”(即数小时或数天)之后超时,这对于DockerHub token 也是如此,因此,如果必要,每次构建运行时,concourse实例都需要能够从身份验证服务中获取新 token 。无论如何,这需要某种形式的持久性身份验证存储在concourse服务器中,并且当前Dockerhub不支持CI访问 token la github。
就是说,您将需要以一种或另一种方式向Concourse提供用户名和密码。
如果您担心安全性,可以采取一些措施来降低风险:
--load-vars-from
来保护您的凭据,防止它们保存在您的管道中,将其存储在其他地方(LastPass,本地文件等)。