You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Tekton Pipeline的dind容器中安装缺失软件包?

在UBI8容器中安装lsscsi、nvme-cli、nfs-utils的解决方案

核心问题分析

UBI8的默认仓库集合和RHEL8主机不完全一致,部分工具包需要启用特定的UBI附加仓库,同时需确保订阅权限覆盖这些仓库。

具体解决步骤

1. 启用完整的UBI仓库集合

在Dockerfile中注册订阅后,显式启用以下必要仓库(包含你遗漏的ubi-8-extras-rpms):

FROM registry.access.redhat.com/ubi8/ubi-init

# 注册Red Hat订阅(替换为你的合法凭证)
RUN subscription-manager register --username=YOUR_USERNAME --password=YOUR_PASSWORD --auto-attach

# 启用UBI核心及附加仓库
RUN subscription-manager repos --enable=ubi-8-baseos-rpms \
    --enable=ubi-8-appstream-rpms \
    --enable=codeready-builder-for-rhel-8-x86_64-rpms \
    --enable=ubi-8-extras-rpms

# 清理缓存、更新索引并安装目标包
RUN yum clean all && yum makecache fast && yum install -y lsscsi nvme-cli nfs-utils

# 可选:注销订阅以减小镜像体积
RUN subscription-manager unregister && subscription-manager clean

2. 验证订阅权限

确认你的Red Hat订阅包含对codeready-builder-for-rhel-8-x86_64-rpms和ubi-8-extras-rpms仓库的访问权限——部分基础订阅可能不覆盖这些附加仓库,需要升级订阅或联系Red Hat调整权限。

3. 无订阅场景的替代方案

如果无法使用Red Hat订阅,可通过EPEL仓库补充获取部分工具:

FROM registry.access.redhat.com/ubi8/ubi-init

# 安装EPEL仓库(UBI8兼容)
RUN yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

# 安装可从EPEL获取的工具,nvme-cli若无订阅则无法从UBI源获取,需寻找第三方兼容包
RUN yum install -y lsscsi nfs-utils

注:nvme-cli在无订阅情况下无法通过官方UBI源获取,需自行寻找兼容的第三方RPM包或镜像。

4. 排查dind容器网络问题

确保Tekton的dind容器能正常访问Red Hat仓库地址(cdn.redhat.com等),检查是否存在网络策略、防火墙或代理拦截仓库请求。可在Dockerfile中加入curl -I https://cdn.redhat.com验证网络连通性。

5. 验证仓库状态

在构建过程中加入yum repolist enabled命令,查看已启用的仓库列表,确认目标仓库已被正确启用且状态正常。

关键遗漏点说明

你之前可能未启用ubi-8-extras-rpms仓库,同时需确认codeready-builder-for-rhel-8-x86_64-rpms仓库的订阅权限是否生效——RHEL主机上的订阅权限可能自动覆盖这些仓库,但容器内需要显式配置并验证权限。

内容的提问来源于stack exchange,提问作者DevOps__1903

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 03:50:03