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

OpenShift4 CRC报ImagePullBackOff 无法拉取本地HTTP Docker镜像如何解决

OpenShift CRC环境拉取本地HTTP非安全镜像仓库配置方案

CRC默认会拦截所有HTTP协议的镜像仓库请求,只允许HTTPS协议的仓库拉取镜像,按以下步骤配置即可解决:

  • 第一步:配置CRC层面的非安全仓库白名单
    在宿主机执行以下命令,将你的本地仓库地址加入白名单:
    crc config set insecure-registry some-interal-regsitry:5000
    
    如果后续你用CRC默认的宿主机域名访问本地服务,建议一并把host.crc.testing:5000也加入白名单,避免后续解析问题:
    crc config set insecure-registry host.crc.testing:5000
    
    配置完成后重启CRC加载配置:
    crc stop && crc start
    
  • 第二步:校验集群级镜像策略配置
    CRC启动完成后,用oc登录集群,检查全局镜像配置是否已经同步了刚才的非安全仓库设置:
    oc get image.config.openshift.io/cluster -o yaml
    
    查看返回结果中spec.registrySources.insecureRegistries字段,如果没有你配置的仓库地址,直接执行编辑命令手动补充:
    oc edit image.config.openshift.io/cluster
    
    在对应位置添加仓库地址即可,配置示例:
    spec:
      registrySources:
        insecureRegistries:
          - some-interal-regsitry:5000
          - host.crc.testing:5000
    
    保存后配置会自动下发到所有集群节点,无需手动重启节点服务。
  • 第三步:解决镜像仓库网络可达问题
    绝大多数配置完白名单仍然拉取失败的场景,都是网络路由问题:
    • 不要在Pod镜像地址里写localhost:5000或者127.0.0.1:5000,这个地址在CRC虚拟机内部指向的是虚拟机自身,不是你的物理宿主机
    • CRC默认内置了宿主机的域名解析host.crc.testing,直接把本地镜像重新打标签为host.crc.testing:5000/my-image,推到本地Docker daemon启动的registry之后,Deployment里的镜像地址也替换成这个地址即可
  • 第四步:重新触发镜像拉取
    所有配置完成后,重启对应工作负载即可重新拉取镜像:
    oc rollout restart deployment/<你的工作负载名称>
    

注意:不要手动登录CRC节点修改/etc/containers/registries.conf文件,CRC虚拟机重启后所有手动修改的节点本地配置都会被重置,只有通过crc config或者集群全局image.config资源做的配置可以持久生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 12:18:24