Kubernetes无法在本地运行docker映像生成

Kubernetes无法在本地运行docker映像生成,kubernetes,minikube,Kubernetes,Minikube,我正在尝试运行一个docker映像,这是我与Kubernetes在本地构建的 这是我的命令行: kubectl run myImage --image=myImage --port 3030 --image-pull-policy=IfNotPresent 我看到很多人说,我们需要添加--image pull policy=IfNotPresent标志,以便Kubernetes可以在本地而不是Docker Hub查找图像,但我仍然会遇到这个错误(从pod、服务和部署上的Minikube仪表板)

我正在尝试运行一个docker映像,这是我与Kubernetes在本地构建的

这是我的命令行:

kubectl run myImage --image=myImage --port 3030 --image-pull-policy=IfNotPresent
我看到很多人说,我们需要添加
--image pull policy=IfNotPresent
标志,以便Kubernetes可以在本地而不是Docker Hub查找图像,但我仍然会遇到这个错误(从pod、服务和部署上的Minikube仪表板)

未能提取映像“myImage”:rpc错误:code=Unknown desc=来自守护进程的错误响应:myImage的提取访问被拒绝,存储库不存在或可能需要“docker登录”

但这里似乎还有另一个问题,我也尝试了
--image pull policy=Never
,但它也不起作用


有什么想法吗?

minikube中没有
图像

Minikube使用单独的
docker守护程序
。这就是为什么,即使图像存在于您的机器中,它仍然在minikube中丢失

首先,将图像发送到minikube

docker save myImage | (eval $(minikube docker-env) && docker load)
此命令将把图像保存为tar存档,然后自己将图像加载到minikube中

接下来,使用部署中的映像,并将
映像提取策略设置为
IfNotPresent

kubectl run myImage --image=myImage --port 3030 --image-pull-policy=IfNotPresent

您在docker中创建的映像在Minikube中不可用,因为Minikube有自己的docker守护程序,它会在那里检查docker映像和DockerHub

按照以下步骤访问Minikube Docker守护程序,构建和部署Docker映像:

  • 使用minikube
    docker env命令
    ,该命令输出将本地docker守护程序指向minikube内部docker注册表所需的环境变量
  • minikube docker环境导出docker\u TLS\u VERIFY=“1”导出 DOCKER_主机=”tcp://172.17.0.2:2376“出口 DOCKER_CERT_PATH=“/home/user/.minikube/certs”导出 MINIKUBE\u ACTIVE\u DOCKERD=“MINIKUBE”

    #要将shell指向minikube的docker守护进程,请运行:eval$(minikube-p minikube docker env)

  • 要应用这些变量

    估价$(minikube-p minikube码头环境)

  • 现在需要再次构建映像,以便将其安装在minikube注册表中,而不是本地注册表中:

    docker build-t forketyfork/你好世界

  • forketyfork/hello world是docker映像的名称

  • 通过yaml将映像部署到kubernetes或Minkube

    kubectl create-f helloworld.yml

  • helloworld.yml是yml/yaml文件的名称

  • 现在
    kubectl get pods
    获取pods的状态

  • 作为进一步参考,

    正常kubernetes集群上的情况会发生什么?如何定位我的群集使用的docker守护程序?@AvikAggarwal,kubernetes群集的每个节点都有一个docker守护程序在运行。请告诉Windows用户应该做什么,因为eval在中不起作用windows@SherryJain,你能试试这个答案,看看它是否有效吗?