如何将本地 docker 镜像部署到 minikube?

How do I deploy a local docker image to minikube?

我的本地 docker 实例上有一些图像,其中一个名为 door_controls:

>docker image ls
REPOSITORY                    TAG       IMAGE ID       CREATED        SIZE
door_controls                 latest    d22f58cdc9c1   3 hours ago    1.12GB
[...]

这个镜像也被部署到我的 minikube 实例:

>minikube ssh -- docker image ls
door_controls                             latest    d22f58cdc9c1   3 hours ago     1.12GB
[...]

(我也很清楚这些是不同的 docker 守护进程,因为 minikube 上的那个也列出了 k8s 守护进程)。 文档(和 Whosebug 答案)表明

minikube image load door_controls
minikube kubectl run door-controls --image=door_controls --port=7777

是从命令行部署这个镜像的方法,但是事件日志告诉我在这个过程中有些失败:

Events:
  Type     Reason     Age                From               Message
  ----     ------     ----               ----               -------
  Normal   Scheduled  59s                default-scheduler  Successfully assigned default/door-controls to minikube
  Normal   Pulling    17s (x3 over 59s)  kubelet            Pulling image "door_controls"
  Warning  Failed     16s (x3 over 57s)  kubelet            Failed to pull image "door_controls": rpc error: code = Unknown desc = Error response from daemon: pull access denied for door_controls, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
  Warning  Failed     16s (x3 over 57s)  kubelet            Error: ErrImagePull
  Normal   BackOff    1s (x3 over 57s)   kubelet            Back-off pulling image "door_controls"
  Warning  Failed     1s (x3 over 57s)   kubelet            Error: ImagePullBackOff

在调用命令的经典传统中我不明白希望它能解决问题,我听从了另一个答案的建议并尝试将 docker 守护进程设置为 minikube 的:

>eval $(minikube -p minikube docker-env)
//these aren't echoed by the shell of course
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://127.0.0.1:54664"
export DOCKER_CERT_PATH="/Users/airza/.minikube/certs"
export MINIKUBE_ACTIVE_DOCKERD="minikube"

似乎默认配置需要启用 TLS(从 localhost 到 localhost?)但我不确定如何关闭它或如何首先将有效的 TLS 从 localhost 添加到 localhost。

也不清楚这是否是问题所在,或者是否还有其他问题。我对图像的命名是错误的吗?我需要指定一个回购协议吗?为什么这个映像没有部署?

Minikube 有它自己的 docker 守护进程,默认情况下无法找到图像,下面在我的本地环境中工作,我注意到第一步已经完成,看起来图像仍在拉了,step-2可能会解决下面的问题

  1. 使用 eval $(minikube docker-env) 设置环境变量,我看到你已经设置好了。
  2. 将 ImagePullPolicy 设置为 Never 以便在部署中使用本地 docker 图像,这将确保图像不会从 docker 存储库中提取。

您可以在您的 use-case.运行 集群上尝试 运行 下面的 yaml。

apiVersion: v1
kind: Pod
metadata:
  name: test
spec:
  containers:
    image: door_controls
    name: door_controls
    imagePullPolicy: Never
    ports:
      - containerPort: 7777

博客文章:https://medium.com/bb-tutorials-and-thoughts/how-to-use-own-local-doker-images-with-minikube-2c1ed0b0968