作者 | 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-kubernetes

Demo

我们尝试启动一个 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   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。

往期推荐

虚幻引擎5上的《黑客帝国》全新体验,爱了爱了

低代码发展专访系列之七:低代码的火爆需要不一样的声音么?

Log4j 第三次发布漏洞补丁,漏洞或将长存

低代码发展专访系列之六:低代码平台能解决业务重构的问题吗?

点分享

点收藏

点点赞

点在看

Colima:MacOS 上的极简容器运行时和 Kubernetes相关推荐

  1. 部署一个 Containerd 容器运行时的 Kubernetes 集群

    前面我们介绍了 containerd 的基本使用,也了解了如何将现有 docker 容器运行时的 Kubernetes 集群切换成 containerd,接下来我们使用 kubeadm 从头搭建一个使 ...

  2. 关于容器和容器运行时的那些事

    转载本文需注明出处:微信公众号EAWorld,违者必究. 前言: 容器,容器编排,微服务,云原生,这些无疑都是当下软件开发领域里面最热门的术语.容器技术的出现并迅速的广泛应用于软件开发的各个领域里,主 ...

  3. 1.Containerd容器运行时初识与尝试

    0x00 前言简述 1.基础介绍 2.专业术语 3.架构简述 0x01 安装配置 1.Ubuntu安装Containerd.io流程 0x02 简单使用 1.镜像拉取与运行 2.创建和使用网络 3.与 ...

  4. 【容器运行时】一文理解 OCI、runc、containerd、docker、shim进程、cri、kubelet 之间的关系

    参考 docker,containerd,runc,docker-shim 之间的关系 Containerd shim 进程 PPID 之谜 内核大神教你从 Linux 进程的角度看 Docker R ...

  5. 课时 30:理解 RuntimeClass 与使用多容器运行时(贾之光)

    本文将主要分享以下三方面的内容: RuntimeClass 需求来源 RuntimeClass 功能介绍 多容器运行时示例 RuntimeClass 需求来源 容器运行时的演进过程 我们首先了解一下容 ...

  6. 课时 28:理解容器运行时接口 CRI(知谨)

    CRI 是 Kubernetes 体系中跟容器打交道的一个非常重要的部分.本文将主要分享以下三方面的内容: CRI 介绍 CRI 实现 相关工具 CRI 介绍 在 CRI 出现之前(也就是 Kuber ...

  7. 从零开始入门 K8s | 理解容器运行时接口 CRI

    作者 | 知谨 阿里云工程师 本文整理自<CNCF x Alibaba 云原生技术公开课>第 28 讲,点击直达课程页面. 关注"阿里巴巴云原生"公众号,回复关键词** ...

  8. Docker的容器运行时组件Containerd

    不久前,Docker宣布开源他们的容器运行时组件Containerd(发音是container-D).目前的Containerd版本是0.2.4,Docker计划在2017年第二季度基于Open Co ...

  9. 3.Containerd容器运行时的配置浅析与知识扩充实践

    公众号关注「WeiyiGeek」 设为「特别关注」,每天带你玩转网络安全运维.应用开发.物联网IOT学习! 本章目录: 0x00 Containerd 容器运行时配置指南 如何配置 Container ...

最新文章

  1. Nat. Biotechnol. | 人工智能药物研发在中国蓬勃发展
  2. Fast Flux技术——本质就是跳板,控制多个机器,同一域名指向极多的IP(TTL修改为0),以逃避追踪...
  3. Qt中的QProgressDialog
  4. 电气设计 | 图说电气成套柜的布线安装
  5. soapui模拟桩mockservice---模拟后台服务器
  6. pe下bootice修复Linux引导,快启动pe工具之bootice引导修复工具使用教程
  7. JDK下载 JVM调优工具jvisualvm下载
  8. zscore标准化步骤_数据的标准化
  9. 算法④:把字符串变成数字
  10. 【C++ Caffe】ubuntu下MNIST训练结果
  11. QPE(量子相位估计)
  12. Python用正则表达式根据格式匹配成语,如:AABB,AABC,ABAC......
  13. 计算机毕业设计(附源码)python英语四六级在线学习系统
  14. Pyqt搭建YOLOV3目标检测界面(超详细+源代码)
  15. 【CCF会议期刊推荐】CCF推荐国际学术期刊/会议(人工智能)
  16. java 虚拟机JVM
  17. 看懂相控阵雷达工作原理及类型简介
  18. C C++基础的Java教程
  19. VMware虚拟机黑群晖DS918+6.2(懒人包)
  20. python环境jieba分词的安装

热门文章

  1. 【LeetCode笔记】338. 比特位计数(Java、位运算、动态规划)
  2. 【LeetCode笔记】114. 二叉树展开为链表(Java、递归)
  3. python pip install pil_解决python的pip install PIL失败问题
  4. php 多线程上传,PHP CURL 多线程操作代码实例
  5. linux c实现线程超时退出,c – 如何在另一个线程的超时内唤醒select()
  6. c语言中math的库函数,C语言中math.h库中的常用函数
  7. contab 手动可以 java_crontab 定时执行脚本出错,但手动执行脚本正常
  8. 使用container的嵌套_ElementUI 技术揭秘(4)— Container 布局容器组件的设计与实现。...
  9. 刚刚!北京高考时间和开学时间定了
  10. 理工男最该死的十二个瞬间