minikube docker-env 是什么意思?



在 Kubernetes minikube 教程中,有这样一段命令来使用 Minikube Docker 守护进程:

$ eval $(minikube docker-env)

这个命令到底有什么作用,也就是说,minikube docker-env到底是什么意思?

命令minikube docker-env返回一组 Bash 环境变量导出,以配置本地环境以重用 Minikube 实例中的 Docker 守护程序。

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

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


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

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

  1. 在主机上生成 Docker 映像。
  2. 使用远程注册表或 minikube 实例的注册表重新标记本地计算机映像注册表中的构建映像。
  3. 将映像推送到远程注册表或 minikube。
  4. (如果使用远程注册表(配置 minikube 具有从注册表拉取映像的适当权限。
  5. 在 minikube 中设置部署以使用该映像。

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

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

有关目的的更多详细信息,请参阅minikube文档。

尝试运行minikube docker-env

你会看到一些environment variables在那里被提及:)

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


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

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


现在,尝试执行docker ps,您可以看到在 VM 中创建的所有容器(仅当您在 k8 的集群中完成一些工作时才会显示(

这一切都是可能的,因为 docker-env 的这些环境变量

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

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

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

如果你有minikube运行,你可以ssh到env中,并查看其中运行的所有docker镜像。

你应该在运行'minikube start'后运行这个命令

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

最新更新