拉本地图像在Kubernetes运行一个吊舱

我有由Dockerfile创build的以下图像:

储存标签图像ID创build的大小

ruby / lab最新f1903b1508cb 2小时前729.6 MB

我有我的以下YML文件:

apiVersion: extensions/v1beta1 kind: Deployment metadata: name: ruby-deployment spec: replicas: 2 template: metadata: labels: app: ruby spec: containers: - name: ruby-app image: ruby/lab imagePullPolicy: IfNotPresent ports: - containerPort: 4567 

在创build部署时,我在该窗格中获得了以下信息:

 ruby-deployment-3830038651-sa4ii 0/1 ImagePullBackOff 0 7m ruby-deployment-3830038651-u1tvc 0/1 ImagePullBackOff 0 7m 

和:

  8m 2m 6 {kubelet minikube} spec.containers{ruby} Normal Pulling pulling image "ruby/lab:latest" 8m 2m 6 {kubelet minikube} spec.containers{ruby} Warning Failed Failed to pull image "ruby/lab:latest": Error: image ruby/lab not found 8m 2m 6 {kubelet minikube} Warning FailedSync Error syncing pod, skipping: failed to "StartContainer" for "ruby" with ErrImagePull: "Error: image ruby/lab not found" 

在这个docker中有registry吗? 我只想在本地进行testing,并将我的代码/ repo传递给朋友进行testing

谢谢

您可以通过运行将docker客户端指向VM的docker守护进程

 eval $(minikube docker-env) 

然后,您可以正常build立您的图像,并使用kubectl正常创build您的kubernetes资源。 确保你有

 imagePullPolicy: IfNotPresent 

在你的YAML或JSON规范中。

此外,还有一个标志将不安全的registry传递给minikube虚拟机。 但是,这必须在您第一次创build机器时指定。

 minikube start --insecure-registry 

您可能还想在使用私人registry时阅读此内容http://kubernetes.io/docs/user-guide/images/

AFAIR minikube在虚拟机上运行,​​因此它不会在主机上看到本地创build的映像,但是… https://github.com/kubernetes/minikube/blob/master/README.md#你可以使用eval $(minikube docker-env)来实际使用在minikube上运行的docker守护进程,并且从此在minikubes docker上构build你的映像,从而期望它可以被minikubes k8s engine从外部registry

请参考图片上的文件 ,或在这里的答案。

一个容器中的每个容器都有自己的图像。 目前,唯一支持的图像types是Docker Image。 在创buildDocker镜像之前,先将其推送到registry中,然后再在Kubernetes窗格中引用它。 容器的image属性支持与docker命令相同的语法,包括私有registry和标记。

您可以推送到公共dockerregistry或使用您自己的私人存储库。 可能有一种方法可以让minikube获取本地构build的镜像,但将Docker镜像推送到registry当然更容易。