将镜像直接推送到私有容器注册表

如果您的客户端工作站能够连接到互联网和私有容器注册表,则可以将镜像直接镜像到私有容器注册表中。

如果您的客户端工作站无法连接到互联网和私有容器注册表,请参阅 《使用中间容器注册表镜像镜像》

安装阶段
  • 你不在这里。 设置客户端工作站
  • 你不在这里。 设置集群
  • 你不在这里。 收集所需信息
  • 你不在这里。 准备在受限网络中运行安装程序
  • 您在此处图标。 准备从私有容器注册表运行安装程序
  • 你不在这里。 为集群做准备 IBM® Software Hub
  • 你不在这里。 准备安装一个实例 IBM Software Hub
  • 你不在这里。 安装一个实例 IBM Software Hub
  • 你不在这里。 设置 control plane
  • 你不在这里。 安装解决方案与服务
谁需要完成这项任务?

注册表管理员注册表管理员或具有向私有容器注册表推送镜像权限的用户必须完成此任务。

你需要在什么时候完成这项任务?

若需从私有容器注册表提取图像,必须在安装前完成此 IBM Software Hub任务。

  • 一次性配置通过周密规划,您可以确定计划在集群上安装的所有组件,从而仅需完成此任务一次。
  • 根据需要重复此操作。不过,若您决定安装其他服务,且相关镜像未存放在您的私有容器注册表中,则可能需要多次执行此任务。

开始之前

最佳实践: 若已设置环境变量,可直接按此任务中的命令执行。 有关说明,请参阅设置安装环境变量

请确保在本任务中执行命令之前已设置环境变量。

在将镜像推送到私有容器注册表之前:
  1. 请确保您为计划镜像的图像预留了足够的空间。 有关图像尺寸的近似信息,请参阅硬件要求
  2. 若您计划安装依赖于 (ibm-watsonx-ai-ifm) Inference foundation models 组件的服务:
    1. 确保已在客户端 Skopeo 工作站上安装:
      yum install skopeo
    2. 请确保您已准备好 Red Hat® 用户名和密码。 (您用于向...进行 https://access.redhat.com身份验证的凭据)
    3. REDHAT_ACCESS_USERNAME 环境变量设置为您的 Red Hat 用户名:
      export REDHAT_ACCESS_USERNAME=<username>
    4. 设置 REDHAT_ACCESS_PASSWORD 环境变量,该变量关联您 Red Hat 用户名的密码:
      export REDHAT_ACCESS_PASSWORD=<password>

关于本任务

使用 命令 cpd-cli manage 将 中的镜像 IBM Entitled Registry 镜像到私有容器注册表。

以下步骤假设下列陈述为真:
  • 您将一次性镜像所有组件。

    镜像的组件由安装环境变量脚本中的变量 ${COMPONENTS} 决定。

    若需镜像特定组件而非多个组件,可使用对应的组件 COMPONENTS ID进行导出。

  • 您已确定需要镜像的任何模型或可选图像

    镜像的模型和可选图像由安装环境变量脚本中的变量 ${IMAGE_GROUPS} 决定。

    若无需镜像任何模型或可选图像,请运行不包含 ${IMAGE_GROUPS} 该变量的命令。

过程

  1. 登录注册表 IBM Entitled Registry
    cpd-cli manage login-entitled-registry \
    ${IBM_ENTITLEMENT_KEY}
  2. 登录到私有容器注册表。

    以下命令假设您正在使用通过凭据保护的私有容器注册表:

    cpd-cli manage login-private-registry \
    ${PRIVATE_REGISTRY_LOCATION} \
    ${PRIVATE_REGISTRY_PUSH_USER} \
    ${PRIVATE_REGISTRY_PUSH_PASSWORD}
    如果您的私有注册表未受保护,请省略以下参数:
    • ${PRIVATE_REGISTRY_PUSH_USER}
    • ${PRIVATE_REGISTRY_PUSH_PASSWORD}
  3. 请确认您能够访问需要镜像的图像文件 IBM Entitled Registry
    1. 检查 IBM Entitled Registry
      提示: 若需验证是否可访问特定组件的图片,可在执行命令 list-images 前运行以下命令:
      export COMPONENTS=<component-ID>
      根据您的环境运行相应的命令:
      您已在客户端工作站上安装了 CASE 软件包
      cpd-cli manage list-images \
      --components=${COMPONENTS} \
      --release=${VERSION} \
      --inspect_source_registry=true

      从 GitHub 下载 CASE 软件包( github.com/IBM )
      cpd-cli manage list-images \
      --components=${COMPONENTS} \
      --release=${VERSION} \
      --inspect_source_registry=true

      从 IBM Cloud Pak 的 Open Container Initiative 存储库下载 CASE 软件包
      cpd-cli manage list-images \
      --components=${COMPONENTS} \
      --release=${VERSION} \
      --inspect_source_registry=true \
      --from_oci=true

      输出将保存至目录 work/offline/${VERSION} 中的文件 list_images.csv

    2. 检查输出是否有错误:
      grep "level=fatal" list_images.csv

      该命令返回因授权错误或网络错误而失败的图像。

  4. EDB Postgres Standard 仅限用户使用。 若您已购买 EDB Postgres Standard,请执行以下命令, EDB Postgres Enterprise 将图像从将镜像到私有容器注册表的图像列表中移除:
    使用默认 cpd-cli-workspace/olm-utils-workspace/work 目录的工作站
    sed -i -e '/edb-postgres-advanced/d' ./cpd-cli-workspace/olm-utils-workspace/work/offline/${VERSION}/.ibm-pak/data/cases/ibm-cpd-edb/*/ibm-cpd-edb-*-images.csv
    使用 CPD_CLI_MANAGE_WORKSPACE 环境变量的计算机工作站
    sed -i -e '/edb-postgres-advanced/d' ${CPD_CLI_MANAGE_WORKSPACE}/work/offline/${VERSION}/.ibm-pak/data/cases/ibm-cpd-edb/*/ibm-cpd-edb-*-images.csv
  5. Watson Studio 仅限用户使用。 若您正在镜像这些图像, Watson Studio且不需要以下图像,可将其删除:

    GPU图像

    GPU图像默认处于镜像状态。 若无需GPU映像,请运行以下命令将其移除:

    使用默认 cpd-cli-workspace/olm-utils-workspace/work 目录的工作站
    sed -i -e '/gpu/d' ./cpd-cli-workspace/olm-utils-workspace/work/offline/${VERSION}/.ibm-pak/data/cases/ibm-wsl-runtimes/*/ibm-wsl-runtimes-*-images.csv
    使用 CPD_CLI_MANAGE_WORKSPACE 环境变量的计算机工作站
    sed -i -e '/gpu/d' ${CPD_CLI_MANAGE_WORKSPACE}/work/offline/${VERSION}/.ibm-pak/data/cases/ibm-wsl-runtimes/*/ibm-wsl-runtimes-*-images.csv

    预训练的自然语言处理模型

    预训练的NLP图像默认处于镜像状态。 若您不需要预训练的自然语言处理(NLP)模型,请运行以下命令将其移除:

    使用默认 cpd-cli-workspace/olm-utils-workspace/work 目录的工作站
    sed -i -e '/nlp/d' ./cpd-cli-workspace/olm-utils-workspace/work/offline/${VERSION}/.ibm-pak/data/cases/ibm-wsl-runtimes/*/ibm-wsl-runtimes-*-images.csv
    使用 CPD_CLI_MANAGE_WORKSPACE 环境变量的计算机工作站
    sed -i -e '/nlp/d' ${CPD_CLI_MANAGE_WORKSPACE}/work/offline/${VERSION}/.ibm-pak/data/cases/ibm-wsl-runtimes/*/ibm-wsl-runtimes-*-images.csv

  6. 将镜像镜像到私有容器注册表。
    提示: 请确定是否需要修改此命令的行为:
    • 默认情况下,此命令仅镜像集群架构所需的镜像。 若需为所有支持的架构镜像图像,请移除 选项 --arch=${IMAGE_ARCH}
    • 此命令会镜像 ${COMPONENTS} 环境变量中指定的所有组件的镜像。 若需为特定组件镜像图像,可在执行命令前 export COMPONENTS=<component-ID> 运行。

    您需要镜像模型或可选图像
    cpd-cli manage mirror-images \
    --components=${COMPONENTS} \
    --groups=${IMAGE_GROUPS} \
    --release=${VERSION} \
    --target_registry=${PRIVATE_REGISTRY_LOCATION} \
    --arch=${IMAGE_ARCH} \
    --case_download=false

    您无需镜像模型或可选图像
    cpd-cli manage mirror-images \
    --components=${COMPONENTS} \
    --release=${VERSION} \
    --target_registry=${PRIVATE_REGISTRY_LOCATION} \
    --arch=${IMAGE_ARCH} \
    --case_download=false

    对于每个组件,该命令都会在 work 目录中生成一个日志文件。

    提示: 运行以下命令可打印日志文件中的任何错误:
    grep "error" mirror_*.log
  7. 确认图像已镜像到私有容器注册表:
    1. 检查私有容器注册表中的内容:
      cpd-cli manage list-images \
      --components=${COMPONENTS} \
      --release=${VERSION} \
      --target_registry=${PRIVATE_REGISTRY_LOCATION} \
      --case_download=false

      输出将保存至目录 work/offline/${VERSION} 中的文件 list_images.csv

    2. 检查输出是否有错误:
      grep "level=fatal" list_images.csv

      该命令返回缺失或无法检查的图像。

  8. 若计划安装依赖于 (ibm-watsonx-ai-ifm) Inference foundation models 组件的服务,请将所需 vLLM 镜像镜像到私有容器注册表。

    您所映射的图像取决于您计划安装的模型。

    Mistral AI 模型
    若计划安装 Mistral AI 以下任一型号,必须从以下位置镜像所需的 vLLMIBM Entitled Registry 映像:
    • codestral-22b
    • codestral-2501
    • ministral-8b-instruct
    • mistral-large
    • mistral-large-instruct-2411
    • mistral-small-instruct
    • pixtral-large-instruct-2411
    skopeo copy --all \
    --src-username cp \
    --src-password ${IBM_ENTITLEMENT_KEY} \
    --src-tls-verify=false \
    --dest-username ${PRIVATE_REGISTRY_PUSH_USER} \
    --dest-password ${PRIVATE_REGISTRY_PUSH_PASSWORD} \
    --dest-tls-verify=false \
    docker://cp.icr.io/cp/cpd/vllm@sha256:cc95bc7619549a5fb9342f8c41c613df5cd65b4e1f90b408db062559a2fdcff9 \
    docker://${PRIVATE_REGISTRY_LOCATION}/cp/cpd/vllm@sha256:cc95bc7619549a5fb9342f8c41c613df5cd65b4e1f90b408db062559a2fdcff9
    所有其他型号
    对于所有其他型号,您必须从以下地址镜像 RHOAI registry.redhat.io 的 CUDA 镜像: vLLM
    1. 登录到 registry.redhat.io
      skopeo login registry.redhat.io \
      --username ${REDHAT_ACCESS_USERNAME} \
      --password ${REDHAT_ACCESS_PASSWORD}
    2. 将图像复制到你的私有容器注册表:
      skopeo copy --all \
      --dest-username ${PRIVATE_REGISTRY_PUSH_USER} \
      --dest-password ${PRIVATE_REGISTRY_PUSH_PASSWORD} \
      docker://registry.redhat.io/rhoai/odh-vllm-cuda-rhel9@sha256:fb84fbf103bf450ef5b060fc5f21a9cf16b166dba207a3c50aa91bccd919d604 \
      docker://${PRIVATE_REGISTRY_LOCATION}/rhoai/odh-vllm-cuda-rhel9@sha256:fb84fbf103bf450ef5b060fc5f21a9cf16b166dba207a3c50aa91bccd919d604

结果

您的架构镜像已同步至私有容器注册表。
注意: 某些组件(例如组件 cpfs )仅提供多架构镜像。 对于具有多架构镜像的组件,所有镜像都会被镜像到私有容器注册表中。

下一步操作

现在您已将镜像镜像到私有容器注册表,即可继续完成为 IBM Software Hub 软件镜像配置镜像摘要镜像集的操作