You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

在Minikube部署Docker镜像失败求助:拉取镜像遇EOF错误

解决Minikube防火墙环境下拉取Docker镜像失败的问题

我来帮你分析下这个问题——你碰到的 Failed to pull image "levm38/server:latest": rpc error: code = Unknown desc = Error response from daemon: Get https://registry-1.docker.io/v2/: EOF 错误,核心原因是Minikube节点的Docker daemon无法通过防火墙正常访问Docker Hub。虽然你本地能推送镜像,但Minikube的内部网络环境和本地主机是隔离的,所以得针对性配置节点的网络规则,下面是几个实用的解决方法:

1. 启动Minikube时直接配置代理

因为你在防火墙后方,给Minikube节点指定代理是最直接的方式。启动Minikube时加上代理参数:

minikube start --docker-env HTTP_PROXY=http://你的代理IP:端口 --docker-env HTTPS_PROXY=http://你的代理IP:端口 --docker-env NO_PROXY=localhost,127.0.0.1,192.168.99.0/24,10.96.0.0/12

注意NO_PROXY要包含Minikube的集群网段(默认是192.168.99.0/24和10.96.0.0/12),避免代理拦截内部集群流量。

2. 检查并修复Minikube节点的Docker代理配置

如果启动时的代理参数没生效,你可以进入Minikube节点手动配置:

# 进入Minikube节点
minikube ssh

编辑Docker的配置文件/etc/docker/daemon.json,添加代理配置:

{
  "proxies": {
    "default": {
      "httpProxy": "http://你的代理IP:端口",
      "httpsProxy": "http://你的代理IP:端口",
      "noProxy": "localhost,127.0.0.1,192.168.99.0/24,10.96.0.0/12"
    }
  }
}

保存后重启Docker服务:

sudo systemctl restart docker

3. 手动将本地镜像导入Minikube节点

如果代理配置始终有问题,你可以绕开外部拉取,直接把本地的镜像导入Minikube环境:

# 确认本地存在目标镜像
docker images | grep levm38/server
# 将镜像导入Minikube节点
minikube image load levm38/server:latest

导入完成后,Minikube部署时会优先使用本地节点的镜像,不用再去Docker Hub请求。

4. 排查防火墙的出站规则限制

最后,你可以联系运维团队确认防火墙规则:

  • 是否允许Minikube节点的IP访问registry-1.docker.io的443端口
  • 防火墙是否开启了TLS中间人拦截(TLS inspection),如果是的话,需要把防火墙的CA证书导入Minikube节点的Docker信任列表中,否则Docker daemon会因为证书验证失败拒绝连接

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

火山引擎 最新活动