minikube docker-env 是什么意思?

What does minikube docker-env mean?

在 Kubernetes minikube tutorial 中有这个命令来使用 Minikube Docker 守护进程:

$ eval $(minikube docker-env)

这个命令到底是干什么的,即minikube docker-env到底是什么意思?

命令 minikube docker-env returns 一组 Bash 环境变量导出来配置您的本地环境以重新使用 Minikube 实例中的 Docker 守护进程。

通过 eval 传递此输出会导致 bash 评估这些导出并使其生效。

您可以通过省略评估步骤和直接 运行ning minikube docker-env 查看将在 shell 中执行的特定命令。但是,这不会执行配置 – 需要为此评估输出。


这是一项工作流优化,旨在改善您在 minikube 环境中 运行 构建和 Docker 图像的体验。重新使用 minikube 的 Docker 守护进程并不是强制性的,以有效地使用 minikube,但这样做会显着提高代码构建测试周期的速度。

在正常的工作流程中,您的主机上会有​​一个单独的 Docker 注册表与 minikube 中的注册表,这需要以下过程来构建和 运行 一个 Docker 映像在 minikube 内部:

  1. 在主机上构建 Docker 映像。
  2. 使用远程注册表或 minikube 实例的注册表在本地机器的映像注册表中重新标记构建的映像。
  3. 将镜像推送到远程 registry 或 minikube。
  4. (如果使用远程注册表)为 minikube 配置适当的权限以从注册表中提取图像。
  5. 在 minikube 中设置部署以使用图像。

通过在 Minikube 中重新使用 Docker 注册表,这变成:

  1. 使用 Minikube 的 Docker 实例构建 Docker 图像。这会将图像推送到 Minikube 的 Docker 注册表。
  2. 在 minikube 中设置部署以使用图像。

有关目的的更多详细信息,请参阅 minikube docs

尝试运行minikube docker-env

您会看到其中提到了一些 environment variables :)

这些变量将帮助您 docker CLI (where you write docker commands) 与 minikube 创建的 VM 中的 docker 守护进程 连接 !


现在,要将 Docker CLI 连接到 docker daemon inside the VM,您需要 运行:eval $(minikube docker-env)

这将暂时(对于该终端)将 CLI 连接到 VM 内的 docker 守护程序 :)


现在,尝试做docker ps,你可以看到在虚拟机中创建的所有容器(只有在k8的集群中完成一些工作才会显示)

This is all possible due to those environment variables by docker-env

您应该 运行 在 运行 宁 'minikube start'

之后执行此命令

eval $(minikube docker-env) 此命令可让您将 cli tool 连接到 Kubernetes 集群 docker-env

弄清楚 $ eval $(minikube docker-env) 做什么的一种方法是了解我们要在本地机器上构建一个 docker 映像,然后将它们部署到 minikube 环境。 正如其他人所解释的那样,此命令使这样做更容易。

  • 它告诉 minikube 使用从 minikube docker-env
  • 返回的配置
  • 然后您可以在本地构建 docker 映像,并能够在 minikube 环境中访问它
  • 完成构建后,您可以取消设置 docker env,即如果您 运行 minikube docker-env --unset[=23= 通过取消设置这些 docker 配置来断开您的 minikube env ]

如果不将您的 docker 配置设置为 minikube env,那么在本地构建您的映像并 运行 它在您的 minikube env 的容器中会有点乏味。

如果您有 minikube 运行ning,您可以通过 ssh 进入环境并查看其中的所有 docker 个图像 运行ning。