Lima:Docker Desktop for Mac 的免费开源且自由的替代品

a74d01fcb0fac69718221141ce2e3946.png

近期,Docker Inc. 公司突然修改了其产品定价和策略,Docker Desktop for Mac/Win 不再 免费 供大型企业内个人使用。

关于此新闻中涉及的条款,这里就不再展开介绍了。我来为大家介绍一款免费、自由、开源的 Docker for Mac 替代品,containerd & Lima。

你只需要执行以下命令即可快速体验:

$ brew install lima  
$ limactl start  
$ lima nerdctl run -it --rm alpine

注意:如果是 Arm 版的 Mac 则需要安装一个额外的 QEMU 的 patch ,请参考:https://github.com/lima-vm/lima#getting-started

什么是 containerd?什么是 nerdctl?

2f567cd318486191b2b12fc167c7a59e.png

containerd 是一个开源的容器运行时,被很多项目所使用,包括 Docker,和很多云厂商默认配置的 Kubernetes 集群,例如 AKS, EKS 和 GKE。

由于 containerd 项目的核心范围[1]仅限于非面向用户的区域,因此用户很难直接与 containerd 进行交互。所以我们近期贡献了一个人性化的 CLI 作为 containerd 的非核心子项目:nerdctl[2]。

nerdctl 的功能和用法几乎与 Docker CLI 相同,但是 nerdctl 还支持 Docker 中不存在的几个 containerd 的前沿功能。此类功能包括但不限于 延迟拉取(stargz)和 运行加密镜像(ocicrypt)。

有关更多输 nerdctl 的内容可参考之前的文章:https://medium.com/nttlabs/nerdctl-359311b32d0e

什么是 Lima?

2e267cc8d0b6b2531ff687c2e23a5038.png

Lima(Linux MAchines)可以启动具有自动文件共享、端口转发和使用 containerd 的 Linux 虚拟机。

Lima 截至到 2021 年 9 月 1 日时已经在 GitHub 上获得了 3k star 。

5bb9eaacebc68d325b55f33a6c386b78.png

我们最初创建 Lima 是为了向 Mac 用户推广 containerd 和 nerdctl ,但是 Lima 也可以用于其他的容器引擎,例如 Podman 甚至是非容器化的应用程序。

Lima 的设计和 WSL2 类似,但 Lima 使用 MacOS 作为其主要的目标主机。Lima 目前不支持 Windows 主机,如果有需求,我们也可以考虑支持 Windows 系统。

Lima 的技术细节

以下是 Lima 的技术细节,感兴趣的小伙伴可以看看:

  • 管理程序:QEMU,带 hvf(Hypervisor.framework)加速器;

  • 支持的 Guest 操作系统:Ubuntu(默认),Debian,Fedora,Alpine,Arch和openSUSE;

  • 文件共享(host->guset):当前版本中使用的是“Reverse SSHFS”,在将来可能会改变,可能会切换到 Samba;

  • 文件共享(guset->host):WebDAV over SSH(在 https://github.com/lima-vm/sshwebdav 中实验);

  • 端口转发:ssh -L 有一个 agent 进程在 guest 中监听 /proc/net/tcp*;

  • 网络:默认在用户空间使用“slirp”。同时也支持通过 sudo 和 VDE 使用 vmnet.framework 的高级网络配置,参考 https://github.com/lima-vm/vde_vmnet;

  • 安全:在设计上不需要使用宿主机上的 root 权限,除了可选的 vmnet.framework 支持。

快速开始

9a316f9e1211f8d9bd4b3df88efd624f.png

安装 Lima

如果你使用的是 Intel Mac,只要运行如下 brew 命令即可完成:

$ brew install lima

如果你使用的 Arm Mac(M1),当前你需要安装一个 QEMU 的 path 版本才能启用 hvf 加速,该补丁可能在不久之后会合并到 QEMU 上游。请参考:https://github.com/lima-vm/lima#getting-started

启动 Lima

执行 limactl start 并按下回车选择 Proceed with the default configuration,稍等几分钟,Lima 会自动完成下载 VM 镜像和启动虚拟机。

$ limactl start  
? Creating an instance "default" [Use arrows to move, type to filter]  
> Proceed with the default configuration  
Open an editor to override the configuration  
Exit  
...  
INFO[0111] READY. Run `lima` to open the shell.

在看到 READY 输出后,执行 lima uname -a 来确认虚拟机已经在运行了。

$ lima uname -a
Linux lima-default 5.11.0-31-generic #33-Ubuntu SMP Wed Aug 11 13:19:04 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

使用 lima nerdctl 构建和运行一个容器

在宿主机上创建一个文件 ~/lima-test/Dockerfile 并写入以下内容:

FROM nginx  
RUN echo "hello lima" > /usr/share/nginx/html/index.html

然后使用如下命令构建一个名为 lima-test 的容器镜像:

$ lima nerdctl build -t lima-test ~/lima-test

Lima 将主机的家目录挂载到 guest 文件系统,所以 guest 中的 nerdctl 可以无缝的访问主机上的 ~/lima-test 目录。为了安全起见,家目录默认被挂载为只读,但是也可以通过在执行 limactl start 时,通过修改配置来实现可读写模式的挂载。

刚才构建好的 lima-test 镜像可通过如下命令进行启动:

$ lima nerdctl run -d -p 127.0.0.1:8080:80 lima-test

Lima 将 guest VM 上已经映射了容器中 80 端口的地址 127.0.0.1:8080 映射到宿主机上的 127.0.0.1:8080,所以你可以直接在 Safari 中打开 http://127.0.0.1:8080/ 进而访问到 lima-test 容器。

24439db3ca188d13873a17b98ed07728.png

通过 Safari 访问到 guest VM

Rancher Desktop & GUI

cae56934aa5895ccddc66c859cf73613.png

Rancher Desktop 已经适配了 Lima ,以便在 macOS 上运行 k3s 。

eb8567c88296660b0c9df62c1a4181d4.png

安装 Rancher Desktop

尽管 Lima 和 nerdctl 它们目前不包含 GUI 控制面,但是 Rancher Desktop 已经使用 Electron 提供了一个很酷的 GUI 。

7587544345845770f0246bf55ceff917.png

Rancher Desktop v0.4.1

73e3f7dff7a81cafb58c300d26996b2d.png

Rancher Desktop 在后台运行 Lima

未来,上游的 Lima 和 nerdctl 可能也会有自己的 GUI ,这取决于来自社区的需求(和贡献)。

相关链接:

  1. https://containerd.io/scope/

  2. https://github.com/containerd/nerdctl

文章来源:

Kubernetes管理员(CKA)培训

633fcc762ad4427a97876db752d33e40.png

本次培训在北京开班,基于最新考纲,通过线下授课、考题解读、模拟演练等方式,帮助学员快速掌握Kubernetes的理论知识和专业技能,并针对考试做特别强化训练,让学员能从容面对CKA认证考试,使学员既能掌握Kubernetes相关知识,又能通过CKA认证考试,学员可多次参加培训,直到通过认证。点击下方图片或者阅读原文链接查看详情。

8d58141aa8a284ea6ba4da386f114526.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
macOS上使用Docker有几种选择。一种选择是使用Docker Desktop,它是官方提供的Docker解决方案。你可以下载Docker.dmg文件,双击安装,然后在应用程序中找到Docker图标并点击运行。启动Docker时可能需要输入macOS的登录密码。你可以通过命令行检查安装后的Docker版本。\[1\] 然而,根据一些用户的反馈,Docker Desktopmac上可能存在一些问题,比如安装包体积大、UI卡顿、启动速度慢等。因此,如果你是重度使用Docker并且有定制化需求的用户,推荐使用Lima虚拟机。Lima支持多种操作系统,并且官方提供了许多样例模板,非常适合重度容器使用者。\[2\] 另外,还有一种选择是使用Colima方案。Colima相对于Docker Desktop来说还不太成熟,适合轻度使用Docker的用户。\[2\] 综上所述,对于macOS上使用Docker,你可以选择Docker DesktopLima虚拟机或Colima方案,具体选择取决于你的使用需求和个人偏好。 #### 引用[.reference_title] - *1* [MacOS Docker 安装配置及基本使用](https://blog.csdn.net/u011019141/article/details/120762431)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v4^insert_chatgpt"}} ] [.reference_item] - *2* *3* [MacDocker的使用](https://blog.csdn.net/yaxuan88521/article/details/125440223)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v4^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值