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

自定义Docker镜像配合Helm安装失败问题排查

解决Containerized Private Minion镜像拉取失败及自定义镜像构建问题

镜像拉取失败的核心原因

你遇到的pull access denied错误,本质是Kubernetes集群节点无法找到本地构建的minionwithcert:3.0.65镜像:

  • 本地构建的镜像仅存在于执行docker build的机器上,K8s节点无权限访问该机器的本地镜像仓库
  • 镜像标签缺少仓库地址/命名空间前缀,K8s默认尝试从Docker Hub公共仓库拉取,而该仓库并不存在

分步解决方法

1. 修正镜像标签并推送到可访问的镜像仓库

这是生产环境的标准做法,需将自定义镜像推送到K8s集群能访问的镜像仓库(公共仓库如Docker Hub,或私有仓库如Harbor、Quay):

  • 登录镜像仓库:
    docker login [仓库地址]
    
    例如Docker Hub直接执行docker login即可
  • 为镜像添加完整标签(格式:[仓库地址/][用户名/]镜像名:标签):
    docker tag minionwithcert:3.0.65 your-username/minionwithcert:3.0.65
    
    如果是私有仓库,标签需包含仓库地址,比如harbor.example.com/your-project/minionwithcert:3.0.65
  • 推送镜像到仓库:
    docker push your-username/minionwithcert:3.0.65
    
  • 更新Helm配置:在values.yaml中指定完整的镜像地址:
    image:
      repository: your-username/minionwithcert
      tag: 3.0.65
      pullPolicy: Always
    
    若使用私有仓库,还需配置imagePullSecrets,确保K8s拥有拉取权限

2. 测试环境:将镜像加载到所有K8s节点

如果是本地测试集群(如Minikube、Kind),可跳过镜像推送,直接同步镜像到所有节点:

  • 导出镜像为tar包:
    docker save -o minionwithcert.tar minionwithcert:3.0.65
    
  • 将tar包复制到每个K8s节点(可通过scp等工具),然后加载镜像:
    docker load -i minionwithcert.tar
    
  • 修改Helm的镜像拉取策略为Never或IfNotPresent,避免K8s尝试从远程仓库拉取:
    image:
      repository: minionwithcert
      tag: 3.0.65
      pullPolicy: Never
    

3. 检查并优化Dockerfile

你的Dockerfile存在可优化点,同时需验证正确性:

  • 移除多余的RUN mkdir /etc/certs:COPY命令会自动创建不存在的目标目录,这行命令可删除
  • 验证证书文件路径:确保Cert.pem和Dockerfile在同一目录,构建时使用正确的上下文路径(比如执行docker build -t minionwithcert:3.0.65 .,注意最后的.表示当前目录为构建上下文)
  • 添加证书导入验证:在keytool命令后添加验证步骤,确保证书成功导入:
    FROM quay.io/newrelic/synthetics-minion:latest
    COPY Cert.pem /etc/certs/
    RUN keytool -noprompt -import -alias proxy -file /etc/certs/Cert.pem -keystore /opt/java/openjdk/lib/security/cacerts -storepass changeit \
        && keytool -list -alias proxy -keystore /opt/java/openjdk/lib/security/cacerts -storepass changeit
    
  • 确认Java路径:若原镜像的Java路径不是/opt/java/openjdk,keytool会执行失败。可先运行原镜像验证路径:
    docker run -it --rm quay.io/newrelic/synthetics-minion:latest which keytool
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 08:30:47