Minikube vs. Docker Desktop for Local Development
Docker 桌面和 minikube 是本地开发的流行选择。您是否需要同时安装以进行本地开发,或者您可以节省一些 RAM 并仅运行其中一个。以下是一些问题,可帮助您决定在您的情况下使用哪一个。
您在生产中运行的是哪个版本的 Kubernetes?
Kuberenets (k8s) 的发布周期为三个月,采用 N-2 支持政策。例如,在 2020 年 7 月,k8s 1.18 是最新的 GA 版本,目前支持 1.17 和 1.16。当 k8s 1.19 发布时,1.16 将失去支持。许多组织运行最旧的受支持的 k8s,以最大程度地降低生产系统的风险。
来源:https://en.wikipedia.org/wiki/Kubernetes#Release_Versions
Docker Desktop 包含 Kubernetes 的硬编码版本。例如,在撰写本文时,最新的 Docker 桌面包括 k8s 1.16.5,因为这是支持的最旧的 k8s 版本。
目前无法在 Docker 桌面更改 k8s 的版本。如果您需要旧版本的 k8s,则必须安装旧版本的 Docker 桌面。基本上 Docker 正在发布“最稳定、使用最广泛”的 k8s 版本,因为许多组织在生产中运行最古老的 GA 版本的 k8s。
Minikube 支持 k8s 的最新 GA 版本以及之前的 6 个次要版本。您可以传递 minikube 命令行参数来启动特定版本的 k8s。比如minikube start --kubernetes-version=v1.18.3
会启动k8s 1.18.3
如何构建容器镜像?
如果您在开发过程中使用Dockerfile
,则需要安装 Docker 桌面,否则您将无法运行docker build
在笔记本电脑上创建容器映像。
如果您使用不需要本地 Docker 守护程序的工具(例如JIB)构建容器映像,则可以在没有 Docker 桌面的情况下运行 minikube。
您需要本地容器注册表吗?
Minikube 不附带容器注册表。默认情况下,它将尝试从 Docker hub 和其他公共注册表解析容器镜像。如果您需要在笔记本电脑上构建容器,并且希望 minikube 从笔记本电脑而不是远程容器注册表中提取它们,那么您将从运行 Docker 桌面中受益,因为它包含本地容器注册表。
如何管理本地开发依赖?
如果您的应用程序依赖于常用的 OSS 数据库、消息队列、缓存,您将不得不决定如何在您的笔记本电脑上设置这些依赖项。三个合理的选择。
-
安装在笔记本电脑上
-
使用 docker-compose 运行
-
运行声音难看
直接在笔记本电脑上安装可能既耗时又容易出错。如果您处理需要不同版本的 PostgreSQL 或 MySQL 的多个应用程序或服务,那么开发将变得更加耗时且容易出错。
您可以使用 docker-compose 运行依赖项,它具有对开发人员友好的工作流程。
-
结帐码
-
docker-compose up
-
在使用 Docker 中运行的服务的笔记本电脑上编写代码/运行测试
-
docker-compose down
使用 docker-compose,我们以简单可重复的方式运行第三方依赖项。
Minikube 还可用于运行第三方依赖项,例如 MySQL 和其他工具。为此,您必须编写 k8s 部署清单并使用 minikube vm ip 地址上的 NodePort 公开服务。
如果你想使用 docker-compose 作为依赖项,那么你需要 docker desktop,否则你可以使用 minikube。
您是否将 JUNIT 与测试容器一起使用?
如果您使用测试容器项目进行自动化测试,您将需要运行 Docker Desktop,因为测试容器目前不支持 Kubernetes。
您使用哪个操作系统进行本地开发?
Docker Desktop 在 MacOS 和 Windows 上可用,它包括 k8s 和 docker 。在 Linux 上,docker 发行版仅包含 docker,因此您必须从其他来源安装 k8s。
Minikube 可在 Mac、Windows 和 Linux 上使用。如果您正在寻找跨 Mac、Windows 和 Linux 的相同开发人员体验,那么 minikube 是一个不错的选择。
结论
如果使用 docker 桌面**
-
你需要从
Dockerfile
构建容器镜像 -
您需要一个本地容器注册表
-
您正在使用 docker compose 管理本地开发环境
-
您正在使用带有 junit 的测试容器
-
docker desktop 中包含的 Kubernetes 的版本是你要使用的版本
-
您的开发人员仅在 MacOS 和 Windows 上。
如果使用 minikube
-
您需要选择特定版本的 Kubernetes 来使用
-
您不需要本地容器注册表
-
你没有使用junit的测试容器
-
您有使用 Linux、MacOS 和 Windows 的开发人员
根据您对上述问题的回答,您很可能需要同时运行两者。
更多推荐
所有评论(0)