8.3.8. 将 Docker 凭证用于私有 registry
您可以为构建提供 .docker/config.json 文件,该文件具有私有 Docker registry 的有效凭证。这样,您可以将输出镜像推送到私有 Docker 注册表中,或者从需要身份验证的私有 Docker 注册表中提取构建器镜像。
对于 OpenShift Container Platform Docker registry,这不是必须的,因为 OpenShift Container Platform 会自动为您生成 secret。
默认情况下,.docker/config.json 文件位于您的主目录中,并具有如下格式:
auths: https://index.docker.io/v1/: 1 auth: "YWRfbGzhcGU6R2labnRib21ifTE=" 2 email: "user@example.com" 3
您可以在此文件中定义多个 Docker registry 条目。或者,也可以通过运行 docker login
命令将身份验证条目添加到此文件中。如果文件不存在,则会创建此文件。
Kubernetes 提供 Secret
对象,可用于存储配置和密码。
从本地 .docker/config.json 文件创建 secret:
$ oc create secret generic dockerhub \ --from-file=.dockerconfigjson=<path/to/.docker/config.json> \ --type=kubernetes.io/dockerconfigjson
这将生成名为
dockerhub
的 secret 的 JSON 规格并创建该对象。创建 secret 后,将其添加到 builder 服务帐户。所有构建都使用
builder
角色来运行,因此您必须使用以下命令使其能访问您的 secret:$ oc secrets link builder dockerhub
将
pushSecret
字段添加到BuildConfig
中的output
部分,并将它设为您创建的secret
的名称,上例中为dockerhub
。spec: output: to: kind: "DockerImage" name: "private.registry.com/org/private-image:latest" pushSecret: name: "dockerhub"
您还可以使用
oc set build-secret
命令在构建配置上设置推送 secret:$ oc set build-secret --push bc/sample-build dockerhub
通过指定
pullSecret
字段(构建策略定义的一部分),从私有 Docker registry 中拉取构建器容器镜像:strategy: sourceStrategy: from: kind: "DockerImage" name: "docker.io/user/private_repository" pullSecret: name: "dockerhub"
您还可以使用
oc set build-secret
命令在构建配置上设置 pull secret:$ oc set build-secret --pull bc/sample-build dockerhub
本例在 Source 构建中使用 pullSecret
,但也适用于 Docker 构建和 Custom 构建。