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

如何配置OpenShift拉取外部Docker Hub镜像时不使用缓存?

解决OpenShift忽略imagePullPolicy: Always仍使用缓存镜像的问题

以下是几个实用的解决方向:

  • 检查镜像标签策略
    你当前使用的是固定标签v1,即使Docker Hub上的镜像已更新,OpenShift可能因为标签未变而优先使用本地缓存。建议:

    • 改用可变标签(如基于Git Commit Hash、时间戳生成的唯一标签),每次更新镜像后使用新标签部署;
    • 若必须使用固定标签,需确保每次推送镜像时重新生成镜像摘要(digest),避免节点认为镜像未变更。
  • 强制触发Pod重建与镜像拉取
    直接重启Deployment或删除现有Pod,让OpenShift重新创建Pod并执行镜像拉取:

    • 滚动重启Deployment(推荐):
      oc rollout restart deployment/docker-test-app
      
    • 删除所有关联Pod:
      oc delete pods -l app=docker-test-app
      
  • 处理OpenShift ImageStream缓存
    使用oc new-app时,OpenShift可能自动创建了对应镜像的ImageStream,它会缓存镜像元数据导致拉取不更新。可以:

    • 查看是否存在相关ImageStream:
      oc get imagestreams
      
    • 强制重新导入镜像元数据:
      oc import-image docker.io/barak1412/docker_test:v1 --confirm
      
    • 若不需要ImageStream,可直接删除它:
      oc delete imagestream docker_test
      
  • 清理节点本地镜像缓存
    如果集群节点本地已缓存旧镜像,即使拉取策略为Always,容器运行时可能因摘要匹配而跳过拉取。可登录节点执行清理:

    • 若使用containerd:
      crictl rmi docker.io/barak1412/docker_test:v1
      
    • 若使用Docker:
      docker rmi docker.io/barak1412/docker_test:v1
      

    清理后再重建Pod即可拉取最新镜像。

  • 确认拉取策略配置生效
    检查Deployment的实际配置是否正确应用了imagePullPolicy: Always:

    oc get deployment docker-test-app -o yaml | grep -A5 -B5 imagePullPolicy
    

    若配置未生效,需重新应用修改后的YAML文件:

    oc apply -f your-deployment.yaml
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 09:13:25