我构建了一个镜像并打了标签,然后将其推送到本地注册表,它成功地推送了,并且我也可以从注册表中拉取它。当我运行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上就不行了,当我使用Kubernetes在minikube上部署此图像时会出现问题,由于无法连接到 http://127.0.0.1:5000,导致部署失败。curl: (7)无法连接到127.0.0.1端口5000:连接被拒绝
你能帮我配置minikube以查看我的本地注册表吗?这样我的问题就会得到解决,然后我就能够成功使用Kubernetes将图像部署到minikube中了。
更新:
我正在使用这个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
当我运行下一个命令来应用更改时:
sudo kubectl apply -f /PATH_TO_YAML_FILE/ConsolePre.yaml
结果为:
NAME READY STATUS RESTARTS AGE
po/tripbru-console-1655054400-x3g87 0/1 ErrImagePull 0 1m
当我运行描述命令时:
sudo kubectl describe pod tripbru-console-1655054400-x3g87
我在描述结果中发现了以下信息:
Error response from daemon: {"message":"Get https://docker.local:5000/v1/_ping: dial tcp: lookup docker.local on 10.0.2.3:53: read udp 10.0.2.15:57792-\u003e10.0.2.3:53: i/o timeout"}
我在Minikube /etc/hosts中配置了docker.local xxx.xxx.xx.4,因此我不知道10.0.2.3:53和10.0.2.15:57792从何而来。
那么我该如何解决这个问题呢?
谢谢 :)
/etc/docker/daemon.json
,内容为{"insecure-registries": ["docker.local:5000", "xxx.xxx.xx.4:5000"]}
。同时使用 IP 地址。创建文件后重新启动 Docker 并再次测试系统。这些操作都将在 Minukube VM 中完成。 - Tarun Lalwani