乐趣区

关于云计算:ColimaMacOS-上的极简容器运行时和-Kubernetes支持-m1

Colima 是一个以最小化设置来在 MacOS 上运行容器运行时,以及 Kubernetes。反对 m1(文末探讨),同样也反对 Linux。

Colima 的名字取自 Container on Lima。Lima 是一个虚拟机工具,能够实现主动的文件共享、端口转发以及 containerd。

Colima 实际上是通过 Lima 启动了名为 colima 的虚拟机,应用虚拟机中的 containerd 作为容器运行时。

应用

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     NAMES

docker pull busybox

docker 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 arm64

limactl 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-kubernetes

Demo

咱们尝试启动一个 nginx 容器:

docker run --rm -d --name nginx -p 8080:80 nginx:latest

docker 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   nginx

Colima 会主动配置端口转发:

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 存储。能够在创立时通过 --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。

文章对立公布在公众号 云原生指北

退出移动版