Colima:MacOS 上的极简容器运行时和 Kubernetes

56f462ac18fba71a62a9ae0560cdc314.gif

作者 | Addo Zhang

来源 | 云原生指北

Colima 是一个以最小化设置来在MacOS上运行容器运行时和 Kubernetes 的工具。支持 m1,同样也支持 Linux。

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

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

104d6d403576768e991f9c6c17812a1f.png

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。

c586c636c3469829816e77726467a7ce.gif

b74a6b3b62c94a325c855ebf3192254e.png

往期推荐

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

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

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

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

50beba721633a2496bd87532e2b9b3b6.gif

点分享

0309aaac575c2978b7d3ecd1a849b622.gif

点收藏

4cb72421db7b92128b528c58a9122ee7.gif

点点赞

1bcf28c4a7f60f8b45871494944e8763.gif

点在看

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/512695.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

当容器应用越发广泛,我们又该如何监测容器?

简介: 随着容器技术蓬勃发展与落地推行,越来越多企业的业务运行于容器中。作为主流部署方式之一,容器将团队的任务和关注点分割开,开发团队只需关注应用程序逻辑和依赖项,而运维团队只需关注部署和管理,无需…

lamp安全审计之php代码审计_paper,PHP实战开发及代码审计之PHP代码审计

{getUnitName}{getLessonName}敬请期待免费{getTaskName}剩余观看时长:{watchLimitRemaining}回放{activityStartTimeStr}正在直播中直播结束{activityLength}免费{getTaskName}敬请期待{"id": "1619","isDefault": "1",&q…

内含福利|CSDN携手字节跳动:云原生Meetup北京站报名热烈启动,1月8日见!

伴随云原生技术的成熟与落地,越来越多框架、中间件等开源项目相继涌现,帮助开发者和企业有效解决业务问题。2022年1月8日,CSDN携手字节跳动基础架构,将在北京举办第四场云原生线下Meetup。在这里,您可以与众多开源技术…

Flink CDC 2.0 正式发布,详解核心改进

简介: 本文由社区志愿者陈政羽整理,内容来源自阿里巴巴高级开发工程师徐榜江 (雪尽) 7 月 10 日在北京站 Flink Meetup 分享的《详解 Flink-CDC》。深入讲解了最新发布的 Flink CDC 2.0.0 版本带来的核心特性,包括:全量数据的并发…

php里的utf-8编码,php – 修复损坏的UTF-8编码

我正在修复一些糟糕的UTF-8编码.我目前正在使用PHP 5和MySQL.在我的数据库中,我有一些不良编码的实例,如:ƒ>数据库排序规则是utf8_general_ci> PHP正在使用正确的UTF-8标头>记事本设置为使用不带BOM的UTF-8>数据库管理在phpMyAdmin处理>并非所有重音…

unity三维地图的经纬度如何在二维地图上表示_接入C++版本recastnavigation寻路库到Unity/服务端中...

前言因为Unity版本的更新迭代,老版本的A*插件在新版本Unity已经无法正常使用,包括一些运行时代码也已经过时,重新接入要花费很多时间,干脆接入一个新的寻路方案吧。这里选择的是久负盛名的https://github.com/recastnavigation/re…

Dataphin功能:集成——如何将业务系统的数据抽取汇聚到数据中台

简介: 数据集成是简单高效的数据同步平台,致力于提供具有强大的数据预处理能力、丰富的异构数据源之间数据高速稳定的同步能力,为数据中台的建设打好坚实的数据基座。 数据中台是当下大数据领域最前沿的数据建设体系, 它并不是从零开始, 无中…

5G专网,路在何方?

作者 | 蜉蝣采采来源 | 无线深海话说你平常打电话、刷视频、玩游戏的4G和5G,一般也被叫做“公网”。这个“公”字的含义正是公开,公用的意思。也就是说,这个网络,不但你能用,你隔壁的张三也能用,张三的老乡…

如何开发 Node.js Native Add-on?

简介: 来一起为 Node.js 的 add-on 生态做贡献吧~ 作者 | 吴成忠(昭朗)这篇文章是由 Chengzhong Wu (legendecas),Gabriel Schulhof (gabrielschulhof) ,Jim Schlight (jimschlight),Kevin Eady,Michael Dawson (mhdaw…

php范式,数据库三范式,轻松理解_PHP教程

网上搜罗了一大堆关于数据库范式理解的文章,都是千律一篇的复制粘贴,连例子都是一模一样,拜托有点创意好不,实在看不下去,自己写一篇个人理解三范式的文章。如果有理解上的不正确之处,请联系我:…

xxl子任务_XXL-JOB v2.1.2 发布,分布式任务调度平台

v2.1.2 Release Notes1、方法任务支持:由原来基于JobHandler类任务开发方式,优化为支持基于方法的任务开发方式;因此,可以支持单个类中开发多个任务方法,进行类复用XxlJob("demoJobHandler")public ReturnT …

程序员如何在业余时间提升自己?

简介: 在自省过程中,我们经常会问自己这么几个问题,这段时间我尝试了什么新事物、有了什么变化、得到什么成果。 近年来,出现越来越多“自主学习”、“业余提升" 的相关话题。 我们经常收到一些同学提问:程序员…

百度打造AIR智能道路系统,可降低90%交通事故

12月27日,百度Create 2021(百度AI开发者大会)在“希壤”APP召开,百度创始人、董事长兼CEO李彦宏在演讲中介绍了AIR(AI Road)智能道路系统。作为软硬一体的路端“自动驾驶系统”, AIR智能道路系统…

java jdbc 连接mysql数据库,Java 通过JDBC连接Mysql数据库

JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发…

云原生演进趋势下传统数据库升级实践

简介: 在数字化背景下,我们有许多思考。数据库跟以前那有什么不一样呢?什么是所谓的云原生数据库呢?作为使用数据库的开发者,对数据库的需求有什么变化?如今使用数据库我们一般会提什么样的诉求&#xff1f…

不小心把桌面进程结束了怎么办_微信不小心把天聊死怎么办?试试这3招,分分钟结束“尬聊”...

微信不小心把天“聊死”怎么办?试试这3招,分分钟结束“尬聊”!我现在坐的各位小伙伴们应该都会有以下这种经历吧,那就是你明明和一个人好好的在聊天,但突然不小心把天聊死了,其实遇到这种情况下小伙伴千万不…

openGauss汇聚创新力量,共同打造最具创新力的数据库开源社区

[中国,北京,2021年12月28日] 今天,以“汇聚数据库创新力量 逐梦数字时代星辰大海”为主题的openGauss summit 2021在北京线上线下同步举办。大会现场,openGauss开源社区理事会和技术委员会升级,openGauss社区分委会正式…

matlab基本矩阵运算,matlab的矩阵基本运算问题已知A=[a,b,c;d,e,f;h,I,j],B=[l,m,n;x,y,z;q,o,p]...

共回答了22个问题采纳率:95.5%clear all;clc;syms a b c d e f h l j m n x y z o p qA[a,b,c;d,e,f;h,l,j];B[l,m,n;x,y,z;q,o,p];aasum(A);bbdiag(A);ccA*B;ddA.*B;eeAB;ffA/B;ggA.B;hhA.^B;-----------------ee和ff太长了,没写>> aaaa [ adh, bel, cfj]>…

测试功能范围_软件测试难学吗?

一、想要零基础学好软件测试,当然需要对测试有一个良好的认知。你可以大致的浏览一下标题,先看这些标题从理解上看有没有难度。然后在根据自己的情况来判断软件测试是否难学。1、什么是软件测试?软件测试(英语:Software Testing)&#xff0c…

Spring DefaultListableBeanFactory源码分析

DefaultListableBeanFactory源码分析文章目录 一、概述 二、关键结构与存储 Bean定义的存储结构ConcurrentHashMap的使用和意义 三、核心功能解析 四、总结 DefaultListableBeanFactory源码分析 一、概述 DefaultListableBeanFactory 是 Spring 框架中的一个核心类&#xff…