镜像下载、域名解析、工夫同步请点击 阿里巴巴开源镜像站
Docker Desktop 是最为风行的开发者工具,Docker 公司在 8/31 发表对 Docker Desktop 的用户协定进行了变更,对集体开发者持续收费,然而对商业开发者采取了免费策略。最近很多同学来征询我相干的问题,我也就此做一个阐明
解决方案
对于为 Docker Desktop 付费流程,咱们曾经和团体洽购团队进行沟通,然而 Docker 公司的 License 受权有些简单,如果是洽购 Pro 版本,须要每个开发者本人付费,不反对批量洽购。而 Business 版本,反对批量洽购,然而咱们也不须要。还在跟进其余可行性,咱们会继续和大家沟通。
如果您只是须要运行 K8s 环境,用阿里云容器服务 ACK 是最举荐的计划,没有之一 :-)
如果您须要一个收费的本地开发环境,也有较好的入手能力,能够参考本文内容
Minikube 简介
Minikube 是社区一个风行的开源 Kubernetes 开发环境。为了帮忙国内的同学能够更加高效和无障碍地应用 minikube 进行日常开发,Minikube 能够反对阿里云作为容器镜像的 mirror site。进一步,在 v1.24.0 的官网 Minikube 中,曾经合并了由阿里云团队提交的一个计划,能够完满反对 Minikube 丰盛的 addon 组件!
Minikube 能够借助不同的 driver 实现,在 MacOS/Windows/Linux 环境中创立 Kubernetes 运行环境。
本文将借助 hyperkit 驱动来在 MacOS 上创立一个虚拟机来配置 Minikube 环境。
首先卸载 Docker Desktop
关上 Preference -> TroubleShoot 页面,点击 Uninstall
装置配置 Minikube 以及相应 Docker 环境
装置 hyperkit, Minikube,以及 Docker 命令行工具(注:不蕴含运行时环境)
$ brew install hyperkit
$ brew install minikube
$ brew install docker
体验 Minikube 上面的 Kubernetes
创立 Kubernetes 环境最简略的计划是应用如下命令
minikube start --image-mirror-country='cn'
minikube start 命令提供了十分多的配置参数,
罕用配置参数如下
--cpus=2
: 为 minikube 虚拟机调配 CPU 核数--memory=2048mb
: 为 minikube 虚拟机分配内存数--registry-mirror=***
: 为了晋升拉取 Docker Hub 镜像的稳定性,能够为 Docker daemon 配置镜像减速,参考阿里云镜像服务 相干加速器配置--kubernetes-version=***
: minikube 虚拟机将应用的 kubernetes 版本。比方,创立 minikube 环境并且调整默认资源配置
创立 minikube 运行环境
$ minikube start --image-mirror-country='cn'
Darwin 11.6 上的 minikube v1.24.0
✨ 主动抉择 hyperkit 驱动
✅ 正在应用镜像存储库 registry.cn-hangzhou.aliyuncs.com/google_containers
Starting control plane node minikube in cluster minikube
Creating hyperkit VM (CPUs=2, Memory=4000MB, Disk=20000MB) ...
正在 Docker 20.10.8 中筹备 Kubernetes v1.22.3…
▪ Generating certificates and keys ...
▪ Booting up control plane ...
▪ Configuring RBAC rules ...
Verifying Kubernetes components...
▪ Using image registry.cn-hangzhou.aliyuncs.com/google_containers/storage-provisioner:v5
Enabled addons: storage-provisioner, default-storageclass
Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
开启 Kubernetes 控制台
$ minikube dashboard
正在开启 dashboard ...
▪ Using image registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-scraper:v1.0.7
▪ Using image registry.cn-hangzhou.aliyuncs.com/google_containers/dashboard:v2.3.1
正在验证 dashboard 运行状况 ...
Launching proxy ...
正在验证 proxy 运行状况 ...
Opening http://127.0.0.1:49996/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ in your default browser...
Minikube 也提供了丰盛的 Addon 组件,比方咱们开启了 metrics-server 组件,就能够监控 Pod 的资源应用状况。
$ minikube addons enable metrics-server
▪ Using image registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server:v0.4.2
启动 'metrics-server' 插件
如果大家须要应用 Ingress,能够参考 https://minikube.sigs.k8s.io/… 来学习应用
更多对于 Minikube 的应用信息能够参考 https://minikube.sigs.k8s.io/
创立不运行 Kubernetes 的 Minikube
对不须要应用 Kubernetes 的开发者,Minikube 在 v1.24 版本之后也提供对不运行 Kubernetes 的 Minikube 环境的反对。能够更加节俭资源。
$ minikube start --no-kubernetes
Darwin 11.6 上的 minikube v1.24.0
▪ MINIKUBE_ACTIVE_DOCKERD=minikube
✨ 主动抉择 hyperkit 驱动
Starting minikube without Kubernetes minikube in cluster minikube
Creating hyperkit VM (CPUs=2, Memory=4000MB, Disk=20000MB) ...
Done! minikube is ready without Kubernetes!
Done! minikube is ready without Kubernetes!
╭───────────────────────────────────────────────────────────────────────────────────────╮
│ │
│ Things to try without Kubernetes ... │
│ │
│ - "minikube ssh" to SSH into minikube's node. │
│ - "minikube docker-env" to point your docker-cli to the docker inside minikube. │
│ - "minikube image" to build images without docker. │
│ │
╰───────────────────────────────────────────────────────────────────────────────────────╯
配置 Docker 环境
首先配置 Docker 命令行工具的环境变量
$ eval $(minikube docker-env)
而后就能够利用相熟的 Docker 命令行工具高兴地游玩了
$ docker ps
$ docker images
创立如下的一个 Dockerfile
FROM nginx
RUN echo 'Hello World!' > /usr/share/nginx/html/index.html
构建并运行镜像
$ docker build -t test .
$ docker run -d -p 8080:80 test
测试镜像,
$ curl $(minikube ip):8080
Hello World!
留神: Docker 暴露出的 host 端口是在 Minikube 虚拟机上,所以须要应用 minikube ip 取得虚拟机所在的 IP。Docker Desktop 进一步优化了开发者体验,让裸露的端点能够间接映射到本地。
咱们如何将本地文件卷挂载到 Docker 容器中呢? 这个就是有点绕。首先,咱们要晓得 Docker 环境是运行在 Virtual Machine 的虚拟机上,咱们须要首先将本地卷,挂载到 Minikube 虚拟机上。
$ mkdir test
$ echo 'Just for test!' > test/test.txt
$ minikube mount ./test:/test
而后,咱们能够在 Docker 镜像中挂载 Minikube 虚拟机上的卷,并进行拜访
$ docker run --rm -it -v /test:/inside busybox cat /inside/test.txt
Just for test!
留神:Docker Desktop 在这个场景下也提供了良好的用户体验,让用户疏忽底层实现的复杂性。
总结
对于入手能力比拟强的开发者,抱着生命不息,折腾不止的态度,不借助 Docker Desktop,也能够进行本地的容器和 Kubernetes 开发。阿里云团队也为国内开发者提供了良好的网络拜访体验。如果大家有问题能够到 Github 上提 Issue.
然而对于一般开发者,Docker Desktop 在开发体验上有很多的优化,每个月 Pro 版本 5$ 的价格也就是一杯星巴克咖啡,能够节俭一些折腾的工夫。
原文起源:https://developer.aliyun.com/…