(Kubernetes Minikube)无法从本地注册表获取docker镜像
我在我的机器上设置了docker,还有minikube,里面有docker,所以我可能在不同的VM上运行了两个docker实例
我构建一个图像并标记它,然后将其推送到本地注册表,它成功推送,我也可以从注册表中拉出它也是当我运行curl得到标签列表我得到结果,这是我做的 1- docker build -t 127.0.0.1:5000/eliza/console:0.0.1 . 2- docker run -d -p 5000:5000 --name registry registry:2 3- docker tag a3703d02a199 127.0.0.1:5000/eliza/console:0.0.1 4- docker push 127.0.0.1:5000/eliza/console:0.0.1 5- curl -X GET http://127.0.0.1:5000/v2/eliza/console/tags/list 以上所有步骤都运行正常,没有任何问题. 我的问题是当我运行minikube并尝试在其中的本地注册表中访问此图像 所以,当我运行下一个命令 1- sudo minikube start --insecure-registry 127.0.0.1:5000 2- eval $(minikube docker-env) 3- minikube ssh 4- curl -X GET http://127.0.0.1:5000/v2/eliza/console/tags/list 在最后一步(第4点),它给了我下一条消息
所以我可以从我的机器访问图像注册表,但不能从minikube访问,当我在minikube上使用Kubernetes部署这个图像并且由于无法连接到http://127.0.0.1:5000而导致部署失败时,我当然会遇到问题 你能帮我配置minikube来查看我的本地注册表,这样我的问题就能解决,然后我可以成功地使用kubernetes将图像部署到minikube吗? UPDATE 我正在使用这个yaml文件(我命名为ConsolePre.yaml)来使用kubernetes部署我的图像 apiVersion: v1 kind: Service metadata: name: tripbru-console labels: app: tripbru-console spec: ports: - port: 9080 targetPort: 9080 nodePort: 30181 selector: app: tripbru-console tier: frontend type: NodePort --- apiVersion: extensions/v1beta1 kind: Deployment metadata: name: tripbru-console labels: app: tripbru-console spec: strategy: type: Recreate template: metadata: labels: app: tripbru-console tier: frontend spec: containers: - image: docker.local:5000/eliza/console:0.0.1 name: tripbru-console ports: - containerPort: 9080 name: tripbru-console 当我运行下一个命令来应用更改
结果是 NAME READY STATUS RESTARTS AGE po/tripbru-console-1655054400-x3g87 0/1 ErrImagePull 0 1m 当我运行describe命令时
我在描述结果中找到了下一条消息
我在minikube / etc / hosts中配置了docker.local xxx.xxx.xx.4,所以我不知道10.0.2.3:53和10.0.2.15:57792来自哪里. 那我怎么能解决这个问题呢. 谢谢 :)
问题是您在任何地方使用127.0.0.1的想法.这是错的.
因此,如果您的机器IP是192.168.0.101.然后下面的工作 1- docker build -t 127.0.0.1:5000/eliza/console:0.0.1 . 2- docker run -d -p 5000:5000 --name registry registry:2 3- docker tag a3703d02a199 127.0.0.1:5000/eliza/console:0.0.1 4- docker push 127.0.0.1:5000/eliza/console:0.0.1 5- curl -X GET http://127.0.0.1:5000/v2/eliza/console/tags/list 因为docker run将注册表映射到127.0.0.1:5000和192.168.0.101:5000.现在在你的机器上只有这个127.0.0.1可以工作.现在你用的时候 3- minikube ssh 你进入minikube机器并且没有在127.0.0.1:5000上运行的注册表.所以错误.使用机器机器IP在本机内无法访问注册表. 我通常解决这个问题的方法是在本地和其他VM中使用主机名. 所以在你的机器上在/ etc / hosts中创建一个条目 docker.local 127.0.0.1 并将命令更改为 1- docker build -t docker.local:5000/eliza/console:0.0.1 . 2- docker run -d -p 5000:5000 --name registry registry:2 3- docker tag a3703d02a199 docker.local:5000/eliza/console:0.0.1 4- docker push docker.local:5000/eliza/console:0.0.1 5- curl -X GET http://docker.local:5000/v2/eliza/console/tags/list 然后当你使用minikube ssh时,在/ etc / hosts中为docker.local创建一个条目 docker.local 192.168.0.101 然后curl -X GET http://docker.local:5000 / v2 / eliza / console / tags / list 编辑-1 对于TLS问题,您需要在minikube中停止docker服务 systemctl stop docker 然后编辑/etc/systemd/system/docker.service.d/10-machine.conf并进行更改
至
然后重新加载守护进程并启动docker服务 systemctl daemon-reload systemctl start docker 之后试着拉 docker pull docker.local:5000/eliza/console:0.0.1 命令应该有效 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- windows – 完全禁用Hyper-V VM中的日期和时间同
- windows-phone-8 – 适用于Windows Phone 8的企业
- windows – 为什么模拟会话中定义的DOS设备不会出
- 如何在Windows中找到证书的安装日期?
- Windows 7 – Windows 7批处理文件:如何检查参数
- 如何在windows git bash shell中访问此环境变量
- windows开机提示:"配置windows update失败,还原
- windows – SAL on Sublime Text 3 – [解码错误
- windows-phone-8.1 – Windows Phone 8.1中按钮的
- windows – 匿名,身份验证,模拟和委托有什么区别