Colima:MacOS 上的极简容器运行时和 Kubernetes
作者 |?Addo Zhang
來源 |?云原生指北
Colima 是一個以最小化設置來在MacOS上運行容器運行時和 Kubernetes 的工具。支持 m1,同樣也支持 Linux。
Colima 的名字取自 Container on Lima。Lima 是一個虛擬機工具,可以實現自動的文件共享、端口轉發以及 containerd。
Colima 實際上是通過 Lima 啟動了名為?colima?的虛擬機,使用虛擬機中的 containerd 作為容器運行時。
colima
使用
Colima 的使用很簡單,執行下面的命令就可以創建虛擬機,默認是 Docker 的運行時。
初次運行需要下載虛擬機鏡像創建虛擬機,耗時因網絡情況有所差異。之后,啟動虛擬機就只需要 30s 左右的時間。
colima?start INFO[0000]?starting?colima INFO[0000]?creating?and?starting?...?????????????????????context=vm INFO[0119]?provisioning?...??????????????????????????????context=docker INFO[0119]?provisioning?in?VM?...????????????????????????context=docker INFO[0133]?restarting?VM?to?complete?setup?...???????????context=docker INFO[0133]?stopping?...??????????????????????????????????context=vm INFO[0136]?starting?...??????????????????????????????????context=vm INFO[0158]?starting?...??????????????????????????????????context=docker INFO[0159]?done此時,在宿主機上就可以使用 Docker 相關的命令了:
docker?ps CONTAINER?ID???IMAGE?????COMMAND???CREATED???STATUS????PORTS?????NAMESdocker?pull?busyboxdocker?images REPOSITORY???TAG???????IMAGE?ID???????CREATED???????SIZE busybox??????latest????b34806a1af7a???2?weeks?ago???1.41MB也可以使用 Lima 的命令行?limact工具查看虛擬機的情況:
limactl?list NAME??????STATUS?????SSH????????????????ARCH???????CPUS????MEMORY????DISK?????DIR colima????Running????127.0.0.1:64505????aarch64????2???????2GiB??????60GiB????/Users/addo/.lima/colima查看操作系統信息:
uname?-a Darwin?Addos-Macbook-Pro.local?21.2.0?Darwin?Kernel?Version?21.2.0:?Sun?Nov?28?20:28:41?PST?2021;?root:xnu-8019.61.5~1/RELEASE_ARM64_T6000?arm64limactl?shell?colima?uname?-a Linux?lima-colima?5.13.0-22-generic?#22-Ubuntu?SMP?Fri?Nov?5?13:22:27?UTC?2021?aarch64?aarch64?aarch64?GNU/Linux或者使用 Colima 的?ssh?命令進入虛擬機:
#?on?host colima?ssh #?in?vm uname?-a Linux?lima-colima?5.13.0-22-generic?#22-Ubuntu?SMP?Fri?Nov?5?13:22:27?UTC?2021?aarch64?aarch64?aarch64?GNU/Linux其他運行時
也可以在創建的時候通過?--runtime containerd?參數指定使用 Containerd 作為運行時。此時就需要使用?colima nerdctl?來使用?nerdctl?與 Containerd 進行交互。
colima?start?--runtime?containerd同樣,還可以創建一個 k3s 作為 Kubernetes 運行時:
colima?start?--with-kubernetesDemo
我們嘗試啟動一個 nginx 容器:
docker?run?--rm?-d?--name?nginx?-p?8080:80?nginx:latestdocker?ps CONTAINER?ID???IMAGE??????????COMMAND??????????????????CREATED?????????STATUS?????????PORTS???????????????????????????????????NAMES 20d6c56e038b???nginx:latest???"/docker-entrypoint.…"???9?seconds?ago???Up?8?seconds???0.0.0.0:8080->80/tcp,?:::8080->80/tcp???nginxColima 會自動配置端口轉發:
curl?-I?http://localhost:8080 HTTP/1.1?200?OK Server:?nginx/1.21.4 Date:?Sun,?26?Dec?2021?04:17:22?GMT Content-Type:?text/html Content-Length:?615 Last-Modified:?Tue,?02?Nov?2021?14:49:22?GMT Connection:?keep-alive ETag:?"61814ff2-267" Accept-Ranges:?bytes虛擬機配置
Colima 啟動的虛擬機默認是 2CPU、2GiB 內存 和 60GiB 存儲??梢栽趧摻〞r通過?--cpu?、--memory?和?--disk?來分配更多資源。
colima?start?--cpu?4?--memory?16也可以修改當前虛擬機的配置:
colima?stop colima?start?--cpu?4?--memory?16同類工具比較
其實有不少類似的工具,比如 kind、k3d 和 minikube 三種都是用來創建 Kubernetes 環境。我個人此前用的 k3d 就比較多。
對于 Docker 容器環境,這三個其實都沒有提供。minikube 的虛擬機中也有容器運行時,但是無法單純安裝 Docker 環境。
對于 Kubernetes 環境來說,這幾種都適合,相比 Colima 來說還支持創建多個集群(當前 Colima 最新版本是 0.2.2,多集群的支持也在開發中。估計 0.3.0 會提供,畢竟創建多個虛擬機就能實現)。但使用 Colima 的話,Kubernetes 和 Docker 可以共享鏡像(本地鏡像)和運行時。
不足
多集群的支持
前面提到,目前還不支持創建多個 Kubernetes 集群,估計 0.3.0 會提供。
m1 的支持
這里還是要說下 m1,我現在主要用 m1 的電腦,本地的容器運行時用的 Docker Desktop。
前面我們有留意到虛擬機使用的是?aarch64?架構系統,對于某些不支持 arm64 的鏡像還是無法運行。畢竟 Lima 是原生支持 m1,而不是使用 Rosetta 轉譯的 Docker Desktop。
有興趣的同學可以嘗試用 Rosetta 轉譯 Lima。
往期推薦
虛幻引擎5上的《黑客帝國》全新體驗,愛了愛了
低代碼發展專訪系列之七:低代碼的火爆需要不一樣的聲音么?
Log4j 第三次發布漏洞補丁,漏洞或將長存
低代碼發展專訪系列之六:低代碼平臺能解決業務重構的問題嗎?
點分享
點收藏
點點贊
點在看
總結
以上是生活随笔為你收集整理的Colima:MacOS 上的极简容器运行时和 Kubernetes的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Kubernetes 的自动伸缩你用对了
- 下一篇: 阿里1682亿背后的协同研发云——云效公