前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在 MacOS 上通过 Lima 使用 Docker

在 MacOS 上通过 Lima 使用 Docker

作者头像
我的小碗汤
发布2023-03-19 17:50:27
2.1K0
发布2023-03-19 17:50:27
举报
文章被收录于专栏:我的小碗汤我的小碗汤

为什么要使用 lima

目前在 macOS 上如果想使用 docker,那么最直接的就是使用 官方推出的 docker-desktop[1]

docker-desktop 带有 gui 进行管理。然鹅我不想要,想要的是直接在命令行中就可以操作 docker 的方案。然后经过搜索有这么几种:podman[2]lima[3]

像一些基于 lima 的产品就不列出来了 实验了 podman 也挺好。之所以最终没有选择 podman,纯粹是由于公司用的黑苹果,cpu 是奔腾,然后使用 qemu 时内核恐慌。podman 没法定义 cpuType(后面不知道是否可以了)。而 lima 提供了自定义 cpuType 的选项

lima 是什么

Linux virtual machines, typically on macOS, for running containerd Motivation The goal of Lima is to promote containerd including nerdctl (contaiNERD ctl) to Mac users, but Lima can be used for non-container applications as well.

在我看来,就是在 macOS 上搞容器,合我心意就开始实践

如何使用 lima

安装

macOS 就不多说了,直接 brew 一把梭

代码语言:javascript
复制
brew install lima

开始创建实例

macOS 和 Windows 无法直接运行 docker,都是通过虚拟化技术来实现的。简单来说就是建一个虚拟机,在虚拟机里面装 docker。

lima 提供了更多的选择,除了可以建 docker,还可以建 k3s、k8s、podman 等等。通过 template 进行选择。

模版列表:

代码语言:javascript
复制
limactl start --list-templates

新建一个实例名称为 default 的 docker 实例(不指定 name 的话就是 docker):

代码语言:javascript
复制
limactl start --name=default template://docker

这里只介绍一下 docker 的使用,其他的类型各位看官可以自行摸索。

使用 docker 实例

刚开始使用比较别扭,需要通过

代码语言:javascript
复制
limactl shell docker docker ps

类似这样的进行操作。这肯定不行的,最好还是直接使用 docker [options] command,所以想想办法

首先,alias 大法好,直接上来一把梭,但是发现是可以直接执行。但是补全无法使用了。这里大家也可以试一下。

然后,我就照着 lima 默认有个 nerdctl.lima 命令。写了个 docker

代码语言:javascript
复制
vim bin/docker

#!/bin/sh
set -eu
exec limactl shell docker docker "$@"

注意:bin 要加入 PATH 中,方便任何地方都可以使用。然后记得 chmod +x 添加执行权限

做到这里,就比较丝滑了。直接 docker 一把梭。

常见问题

如何在局域网中暴露端口

默认只能主机访问,如果需要暴露端口,那么就需要更改监听地址为 0.0.0.0 然后可以查看这个讨论: Expose Lima Machine Ports Lan[4]

关键配置在端口转发这里:

代码语言:javascript
复制
portForwards:
- guestPortRange: [1, 65535]
  guestIPMustBeZero: true
  hostIP: 0.0.0.0

注意:这样配置之后,默认 -p 就是 0.0.0.0 (可以看上面讨论链接详情,由于博主英语太差,就不贴图献丑了)

cpuType 的问题

其实这个我也拿不准,但是的确是通过自定义 cpuType 解决了。

代码语言:javascript
复制
qemu-system-x86_64 -cpu help

然后我选择了 kvm64,根据 自定义架构的 cpu 类型[5] 进行调整 yaml 配置文件

代码语言:javascript
复制
cpuType:
  # ? Builtin default: "cortex-a72" (or "host" when running on aarch64 host)
  aarch64: null
  # ? Builtin default: "qemu64" (or "host" when running on x86_64 host)
  x86_64: "kvm64"

然后重新启动 docker 实例即可。

参考资料

[1]

官方推出的 docker-desktop: https://www.docker.com/products/docker-desktop/

[2]

podman: https://podman.io/

[3]

lima: https://github.com/lima-vm/lima

[4]

Expose Lima Machine Ports Lan: https://github.com/lima-vm/lima/discussions/813#discussioncomment-2656253

[5]

自定义架构的 cpu 类型: https://github.com/lima-vm/lima/blob/master/examples/default.yaml#L196-L203

- END -

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-08-23,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 进击云原生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • lima 是什么
  • 如何使用 lima
    • 安装
      • 开始创建实例
        • 使用 docker 实例
        • 常见问题
          • 如何在局域网中暴露端口
            • cpuType 的问题
              • 参考资料
              相关产品与服务
              容器镜像服务
              容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
              http://www.vxiaotou.com