使用本地映像而不在kubernetes中创建本地注册表

时间:2020-01-31 06:35:01

标签: docker kubernetes minikube

我对docker和kubernetes相当陌生,并经历了kubernetes docs

为Kubernetes使用单个VM时,重新使用Minikube的内置Docker守护程序很有用。重用内置守护程序意味着您不必在主机上构建Docker注册表并将映像推送到其中。取而代之的是,您可以在与Minikube相同的Docker守护程序中进行构建,从而加快本地实验的速度。

因此,我的理解是本地计算机上正在运行两个实例,一个在macOS中运行,另一个在VM中运行。

假设我在macOS上使用docker实例创建了一个映像,然后我想在Kubernetes上使用它,

问题1:我是否严格需要创建一个本地注册表,然后从Kubernetes集群中提取它?

它进一步说,

要在Mac / Linux主机上使用Docker守护程序,请在外壳程序中使用docker-env命令:eval $(minikube docker-env)

运行此命令会在当前shell中创建一些环境变量。

问题2:这是否能够在不创建本地注册表的情况下从我的macOS的docker中提取我构建的映像。

1 个答案:

答案 0 :(得分:4)

Minikube在笔记本电脑上的虚拟机(VM)中运行一个单节点Kubernetes集群。
因此,它将在您的macOS上运行的VM上创建k8s设置。

eval $(minikube docker-env)  

macOS上的此命令将帮助您将上下文切换到docker,以便您可以从macOS运行docker命令。

问题1:我是否严格需要创建一个本地注册表,然后从Kubernetes集群中提取它?
不,您不需要显式创建本地注册表,因为一切都可以在minikube中的单个VM上运行。

问题2:这将能够在不创建本地注册表的情况下从macOS的docker中提取我构建的映像吗?
通过在主机上切换docker env上下文,您可以拉出不需要的映像,为此无需创建注册表。请记住,您的macOS并非k8s集群的一部分。您的k8s集群正在minikube创建的单个VM上运行。