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
1
registry URL。
2
加密的密码。
3
用于登录的电子邮件地址。

您可以在此文件中定义多个 Docker registry 条目。或者,也可以通过运行 docker login 命令将身份验证条目添加到此文件中。如果文件不存在,则会创建此文件。

Kubernetes 提供 Secret 对象,可用于存储配置和密码。

  1. 从本地 .docker/config.json 文件创建 secret:

    $ oc create secret generic dockerhub \
        --from-file=.dockerconfigjson=<path/to/.docker/config.json> \
        --type=kubernetes.io/dockerconfigjson

    这将生成名为 dockerhub 的 secret 的 JSON 规格并创建该对象。

  2. 创建 secret 后,将其添加到 builder 服务帐户。所有构建都使用 builder 角色来运行,因此您必须使用以下命令使其能访问您的 secret:

    $ oc secrets link builder dockerhub
  3. 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
  4. 通过指定 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 构建。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.