3.8. 将 docker 凭证用于私有容器镜像仓库
您可以为构建提供 .docker/config.json 文件,在文件中包含私有容器 registry 的有效凭证。这样,您可以将输出镜像推送到私有容器镜像 registry 中,或从需要身份验证的私有容器镜像 registry 中拉取构建器镜像。
您可以为同一 registry 中的多个存储库提供凭证,每个软件仓库都有特定于该 registry 路径的凭证。
对于 OpenShift Container Platform 容器镜像 registry,这不是必需的,因为 OpenShift Container Platform 会自动为您生成 secret。
默认情况下,.docker/config.json 文件位于您的主目录中,并具有如下格式:
您可以定义多个容器镜像 registry,或在同一 registry 中定义多个存储库。或者,也可以通过运行 docker login 命令将身份验证条目添加到此文件中。如果文件不存在,则会创建此文件。
Kubernetes 提供Secret 对象,可用于存储配置和密码。
先决条件
-
您必须有一个
.docker/config.json文件。
流程
输入以下命令从本地
.docker/config.json文件创建 secret:oc create secret generic dockerhub \ --from-file=.dockerconfigjson=<path/to/.docker/config.json> \ --type=kubernetes.io/dockerconfigjson$ oc create secret generic dockerhub \ --from-file=.dockerconfigjson=<path/to/.docker/config.json> \ --type=kubernetes.io/dockerconfigjsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 这将生成名为
dockerhub的 secret 的 JSON 规格并创建该对象。将
pushSecret字段添加到BuildConfig中的output部分,并将它设为您创建的secret的名称,上例中为dockerhub:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用
oc set build-secret命令在构建配置上设置推送 secret:oc set build-secret --push bc/sample-build dockerhub
$ oc set build-secret --push bc/sample-build dockerhubCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您还可以将 push secret 与构建使用的服务帐户链接,而不指定
pushSecret字段。默认情况下,构建使用builder服务帐户。如果 secret 包含与托管构建输出镜像的存储库匹配的凭证,则 push secret 会自动添加到构建中。oc secrets link builder dockerhub
$ oc secrets link builder dockerhubCopy to Clipboard Copied! Toggle word wrap Toggle overflow 通过指定
pullSecret字段(构建策略定义的一部分),从私有容器镜像 registry 拉取构建器容器镜像:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用
oc set build-secret命令在构建配置上设置拉取 secret:oc set build-secret --pull bc/sample-build dockerhub
$ oc set build-secret --pull bc/sample-build dockerhubCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意本例在 Source 构建中使用
pullSecret,但也适用于 Docker 构建和 Custom 构建。您还可以将 pull secret 链接到构建使用的服务帐户,而不指定
pullSecret字段。默认情况下,构建使用builder服务帐户。如果 secret 包含与托管构建的输入镜像的存储库匹配的凭证,pull secret 会自动添加到构建中。要将 pull secret 链接到构建使用的服务帐户,而不指定pullSecret字段,请输入以下命令:oc secrets link builder dockerhub
$ oc secrets link builder dockerhubCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您必须在
BuildConfigspec 中指定一个from镜像,才能利用此功能。由oc new-build或oc new-app生成的 Docker 策略构建在某些情况下可能无法进行这个操作。