本地部署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配置:
- 进入Minikube虚拟机:
minikube ssh - 编辑Docker daemon配置:
sudo vi /etc/docker/daemon.json - 添加镜像加速配置:
{ "registry-mirrors": ["https://hub-mirror.c.163.com", "https://114.114.114.114"] } - 重启Docker服务:
sudo systemctl restart docker - 退出虚拟机:
exit
- 进入Minikube虚拟机:
3. 手动导入镜像到Minikube环境
如果还是拉取不到镜像,那就曲线救国,先在能正常访问Docker Hub的环境拉取镜像,再导入到Minikube里:
- 本地拉取需要的镜像:
docker pull node:6.9.2 - 把镜像保存成tar包:
docker save -o node-6.9.2.tar node:6.9.2 - 把tar包复制到Minikube虚拟机:
minikube cp node-6.9.2.tar /home/docker/ - 进入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配置:
- 进入Minikube虚拟机:
minikube ssh - 修改resolv.conf文件:
sudo vi /etc/resolv.conf - 把里面的nameserver改成公共DNS,比如
8.8.8.8或者国内的114.114.114.114 - 保存退出后,再尝试拉取镜像应该就能正常工作了。
内容的提问来源于stack exchange,提问作者user3398900




