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

本地部署Minikube后构建Docker镜像时拉取镜像失败求助

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

嘿,我之前也碰到过一模一样的问题,这种server misbehaving和拉取镜像失败的情况,大多是Docker Hub网络连接不畅,或者Minikube内置的Docker环境没配置好导致的。给你几个亲测有效的解决步骤:

1. 确保切换到Minikube的Docker上下文

很多时候我们会不小心用本地的Docker环境来构建镜像,但Minikube是用自己内置的Docker daemon的,所以先执行这个命令切换上下文:

eval $(minikube docker-env)

执行完后可以用docker info验证一下,看输出里的Docker Root Dir是不是指向Minikube虚拟机里的路径,确认环境没问题。

2. 给Minikube配置Docker镜像加速

如果是网络访问Docker Hub太慢或者被限制,直接给Minikube加国内的镜像源就好了:

  • 如果你还没启动Minikube,启动的时候直接指定镜像加速:
    minikube start --image-mirror-country='cn' --registry-mirror=https://hub-mirror.c.163.com
    
    (也可以用自己的阿里云镜像加速地址,速度会更快)
  • 要是已经启动了Minikube,就进入虚拟机修改Docker配置:
    1. 进入Minikube虚拟机:minikube ssh
    2. 编辑Docker daemon配置:sudo vi /etc/docker/daemon.json
    3. 添加镜像加速配置:
      {
        "registry-mirrors": ["https://hub-mirror.c.163.com", "https://114.114.114.114"]
      }
      
    4. 重启Docker服务:sudo systemctl restart docker
    5. 退出虚拟机:exit

3. 手动导入镜像到Minikube环境

如果还是拉取不到镜像,那就曲线救国,先在能正常访问Docker Hub的环境拉取镜像,再导入到Minikube里:

  1. 本地拉取需要的镜像:docker pull node:6.9.2
  2. 把镜像保存成tar包:docker save -o node-6.9.2.tar node:6.9.2
  3. 把tar包复制到Minikube虚拟机:minikube cp node-6.9.2.tar /home/docker/
  4. 进入Minikube导入镜像:
    minikube ssh
    docker load -i /home/docker/node-6.9.2.tar
    exit
    

这时候再执行docker build -t hello-node:v1 .,Docker就会直接用本地已有的node镜像,不用再去Docker Hub拉取了。

4. 修复DNS解析问题

server misbehaving这个错误很多时候是DNS解析失败导致的,你可以试试修改Minikube的DNS配置:

  1. 进入Minikube虚拟机:minikube ssh
  2. 修改resolv.conf文件:sudo vi /etc/resolv.conf
  3. 把里面的nameserver改成公共DNS,比如8.8.8.8或者国内的114.114.114.114
  4. 保存退出后,再尝试拉取镜像应该就能正常工作了。

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

火山引擎 最新活动