在使用 Docker 和编排(kubernetes)时,我必须安装并使用 minikube 来创建一个简单的沙箱环境。一开始我以为 minikube 安装了某种虚拟机并在其中运行“缩小”的 kubernetes 环境,但是,在安装列出我的本地 Docker 运行容器后,我发现 minikube 作为容器运行!
为什么 minikube 本身作为 Docker 容器运行?它如何运行其他容器?
在使用 Docker 和编排(kubernetes)时,我必须安装并使用 minikube 来创建一个简单的沙箱环境。一开始我以为 minikube 安装了某种虚拟机并在其中运行“缩小”的 kubernetes 环境,但是,在安装列出我的本地 Docker 运行容器后,我发现 minikube 作为容器运行!
为什么 minikube 本身作为 Docker 容器运行?它如何运行其他容器?
实验性 Docker 支持似乎已添加到 minikube 1.7.0 中,并开始成为minikube 1.9.0 中的默认运行时。在我写这篇文章时,当前是 1.15.1。
关于“docker”驱动程序的minikube 文档说明,特别是在原生 Linux 主机上,没有中间虚拟机:如果您可以在容器中运行 Kubernetes,它可以使用整个主机系统的资源而无需特殊配置或分区。之前的 minikube-on-VirtualBox 安装需要为 VM 预先分配内存和磁盘,而且这些设置很容易出错。即使在非 Linux 主机上,如果您正在运行 Docker Desktop,共享其隐藏的 Linux VM 可以提高资源利用率,并且您无需决定将 2 GB RAM 分配给 Docker Desktop,将 4 GB 分配给 minikube VM .
很长一段时间以来,在 Docker 容器中运行一个单独的 Docker 守护进程是可能的,但并不鼓励。同样,可以但通常不鼓励在容器中运行多进程初始化系统。如果你同时做这两件事,那么你就可以将核心 Kubernetes 组件(etcd、apiserver、kubelet……)放在一个伪装成 Kubernetes 节点的容器中。Kubernetes 已经知道如何拉取 Docker 镜像也有帮助,这可以最大程度地减少在 Docker 中运行 Docker 的一些令人困惑的问题。