不借助 Docker Desktop 在Mac上開發容器應用
映象下載、域名解析、時間同步請點選 阿里巴巴開源映象站
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 ``` ![file](~tplv-k3u1fbpfcp-zoom-1.image) 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,可以參考 來學習使用
更多關於 Minikube 的使用資訊可以參考
建立不執行 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/article/815063
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70003733/viewspace-2844878/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Docker Desktop 現在可以在 Linux 上使用DockerLinux
- Parallels Desktop 19: 實現Windows應用程式在Mac上的無縫執行ParallelWindowsMac
- 應用容器引擎-DockerDocker
- Docker Compose 多容器應用Docker
- 在Docker容器中執行GUI圖形應用的開源專案DockerGUI
- Docker容器化部署Python應用DockerPython
- 在Docker容器中執行ASP.NET MVC應用程式DockerASP.NETMVC
- Docker容器與虛擬化技術:OpenEuler 部署 docker容器應用Docker
- 在優麒麟上使用 Electron 開發桌面應用
- Mac上使用Docker Desktop啟動Kubernetes,踩坑後才搞定MacDocker
- 在零程式碼開發平臺上如何開發應用程式
- HarmonyOS 5.0應用開發——ArkTS容器類
- Docker下Nacos配置應用開發Docker
- .NET Core容器化之多容器應用部署(Docker-Compose)Docker
- Docker應用容器日誌資訊收集Docker
- Docker的安裝與容器應用部署Docker
- 使用容器Docker進行開發Docker
- Docker入門系列之一:在一個Docker容器裡執行指定的web應用DockerWeb
- 在瀏覽器中啟用kali-desktop——基於docker瀏覽器Docker
- 在Docker中,可以在一個容器中同時執行多個應用程序嗎?Docker
- Docker容器中執行.Net Core應用程式Docker
- Appcode 2022 for mac(ios應用開發)APPMaciOS
- 如何使用Cisdem AppCrypt在Mac上給應用程式加密?APPMac加密
- Docker開發例項之應用場景Docker
- 開始在 CentOS 上使用 dockerCentOSDocker
- 如何進入 Docker Desktop for Mac 虛擬機器DockerMac虛擬機
- 利用ELK搭建Docker容器化應用日誌中心Docker應用日誌
- 基於Docker應用容器日誌檔案收集Docker
- 教你使用Docker容器化Node.js應用程式DockerNode.js
- Docker容器中應用程式的log輸出管理Docker
- zabbix容器化安裝及監控docker應用Docker
- AppCode 2022 for mac(ios應用開發)中文APPMaciOS
- 在 Mac 上執行 Windows 應用程式,只需一個CrossOver!MacWindowsROS
- Xcode:在Mac上打造卓越的開發體驗XCodeMac
- 使用Travis在Docker Hub上管理開源Docker映象Docker
- 為什麼不建議把資料庫部署在docker容器內?資料庫Docker
- Docker(1):初體驗之應用掛載到容器Docker
- 使用Docker容器化SpringBoot+Dubbo應用的實踐DockerSpring Boot