如何在 Minikube 中本地测试 docker 镜像?

问题描述 投票:0回答:1

我已经安装了

kubectl
命令行工具,客户端版本为v1.27.2,kustomize版本为v5.0.1,服务器版本为v1.26.3。我在 Microsoft Windows 10 Enterprise 和 Git Bash 上使用
minikube
v1.30.1。我通过以下方式启动了 minikube 集群:

minikube start

然后,我在 minikube 集群中重用了 Docker 守护进程:

eval $(minikube docker-env)

现在,我想测试 minikube 集群内的 hashicorp/http-echo docker 镜像。我尝试将图像作为 docker 容器运行:

docker run -p 5678:5678 hashicorp/http-echo -text="hello world"

但是,如果我在浏览器中访问 http://localhost:5678/ 站点,则无法访问该站点。于是我强行删除了docker镜像,并从minikube中退出了docker环境:

docker rmi -f docker.io/hashicorp/http-echo:latest
eval $(minikube docker-env -u)

如果我在没有 minikube 的情况下重新运行 docker 镜像,一切都会按预期工作。但是如何在浏览器中测试 minikube 集群内的 docker 镜像呢?

docker kubernetes minikube
1个回答
0
投票

启动 minikube 集群并重用 Docker 守护进程后,您需要拉取 Docker 镜像:

docker pull hashicorp/http-echo

通过执行

minikube image ls
命令确保图像存在。之后,使用 Kubernetes 命令行工具 run 命令代替 Docker:

kubectl run http-echo --image=hashicorp/http-echo:latest --image-pull-policy=Never

它从 docker 镜像创建

http-echo
pod。它禁用镜像拉取策略,因为 docker 镜像已经在本地 minikube 集群中。最后一步是公开 pod 的端口以在浏览器中访问它:

kubectl port-forward http-echo 8080:5678

pod 的端口为 5678,本地端口为 8080。现在,您应该能够在浏览器中通过 http://localhost:8080 站点访问该服务。

要删除 Pod,请执行

kubectl delete pod http-echo
命令。

注意:您可以通过省略镜像拉取策略参数来减少步骤数,该参数允许您从 Docker Hub 下载镜像。但是,如果您使用

docker build -t <my-image> .
命令构建自定义映像,那么
--image-pull-policy=Never
参数将有意义,因为您不想从外部源提取 docker 映像。

© www.soinside.com 2019 - 2024. All rights reserved.