finch - Finch CLI 一个用于容器开发的开源客户端

Created at: 2022-11-07 16:38:12
Language: Go
License: Apache-2.0
芬奇标志

你好,芬奇

Finch 是一个用于容器开发的开源客户端。其简单的安装程序提供了一个最小的本机客户端以及其他开源组件的自以为是的发行版。Finch没有创建更多的选项来推理和选择,而是通过使其易于安装和使用来帮助推广其他项目,同时提供一个简单的本机客户端将它们联系在一起。

Finch提供了一个与nerdctl集成的简单客户端。对于核心构建/运行/推送/拉取命令,Finch 依靠 nerdctl 来处理繁重的工作。它与 containerd 配合使用以进行容器管理,并与 BuildKit 配合使用,以处理开放容器计划 (OCI) 映像构建。这些组件全部组合在一起,并在 Lima 管理的虚拟机中运行。

使用 Finch,你可以利用这些现有项目,而无需追逐所有细节。只需安装并开始运行和构建你的容器!

在 macOS 上开始使用 Finch

该项目将在不久的将来拥有更完整的文档和教程。现在让我们从这里开始。如上所述,与 集成。虽然 Finch 没有实现 100% 的上游命令,但最常见的命令已经到位并正常工作。nerdctl 命令参考可以作为文档的起点。

finch
nerdctl

安装芬奇

要在 macOS 上开始使用 Finch 需要满足以下条件:

  • macOS catalina(10.15)或更高版本,新版本将尽最大努力进行测试
  • 适用于 macOS 的英特尔或苹果硅 M1 系统
  • 建议的最低配置为 2 个 CPU、4 GB 内存

项目的 GitHub 发布页面下载适用于你的架构的发布包,下载后双击并按照说明进行操作。

安装完成后,需要一次设置底层系统。此初始设置通常需要大约一分钟。

finch vm init

finch vm init
INFO[0000] Initializing and starting Finch virtual machine...
..
INFO[0067] Finch virtual machine started successfully

运行容器和构建映像

现在可以运行测试容器。如果你熟悉容器开发,则可以根据需要使用该命令。

run

finch run --rm public.ecr.aws/finch/hello-finch

如果你是容器的新手,那太令人兴奋了!在安装并初始化 Finch 后尝试上述命令。该命令在本地拉取映像(如果尚未存在),然后为你创建并运行容器。请注意,方便的选项将在完成执行后删除容器实例。

run
--rm

要构建镜像,请尝试 finch 客户端仓库中的快速示例。

git clone git@github.com:runfinch/finch.git
cd finch/contrib/hello-finch
finch build . -t hello-finch
..

同样,如果你不熟悉容器,则只需构建容器映像。好!

该命令将与构建系统(在 Finch 的情况下是 Moby Project 的 BuildKit)一起使用,从 Dockerfile 创建 OCI 映像,这是一种创建映像的特殊配方。然后,可以使用此映像创建容器。你可以使用该命令查看本地拉取和构建的映像。

build
finch images

Finch 通过该选项可以轻松跨架构构建和运行容器。与命令一起使用时,它将使用指定的体系结构创建容器。例如,在 Apple Silicon M1 系统上,将使用 x86-64 架构创建一个容器并在其中运行进程。

--platform
run
--platform=amd64

uname -ms
Darwin arm64

finch run --rm --platform=amd64 public.ecr.aws/amazonlinux/amazonlinux uname -ms
Linux x86_64

你还可以将此选项用于构建,从而轻松创建多平台映像。

--platform

与芬奇合作

我们计划在这里创建更多面向容器新手用户的文档和教程,以及针对更高级用户的一些提示和技巧。现在,如果你准备好踢轮胎,请这样做!你将从其他工具中找到你熟悉的大多数命令和选项,并且如你所期望的那样(或者,因为它们在 nerdctl 上游记录)。涵盖了我们每天使用的大多数命令,包括卷和网络管理以及撰写支持。如果 Finch 没有做你想做的事情,请考虑打开一个问题或拉取请求。

芬奇和其他工具

安装程序会将 Finch 及其依赖项安装在系统自己的区域中,并且可以与其他容器开发工具愉快地共存。Finch是一个新项目,并不意味着直接替代其他工具。因此,我们不建议将其他命令名称别名或链接到 。

finch

关于卷装载的说明

该命令具有卷装载选项。如果你不熟悉,请参阅nerdctl run下以获取更多详细信息。这允许你将目录从本地主机挂载到容器中。Finch 需要注意的一点是:目前,卷装载选项仅支持其中的位置。指定外部目录可能会导致意外行为。不久将添加对其他装载位置的支持。

run
-v
Volume flags
$HOME
-v
$HOME

配置

芬奇有一个简单而可扩展的配置。配置文件将在首次运行时生成。目前,此配置文件具有基础虚拟机的系统资源限制选项。这些默认限制是根据主机系统上的可用资源动态生成的,但可以通过手动编辑配置文件来更改。

${HOME}/.finch/finch.yaml

目前,选项包括:

  • CPU [int]:专用于虚拟机的 vCPU 数量
  • 内存 [字符串]:专用于虚拟机的内存量

有关配置选项的完整列表,请查看此处的结构

示例如下所示:

finch.yaml

cpus: 4
memory: 4GiB

下一步是什么?

我们很高兴在公开场合开始这个项目,我们很乐意听取你的意见。如果你有想法或发现错误,请打开一个问题。如果你有任何想提出或头脑风暴的内容,请随时开始讨论。也欢迎拉取请求!有关贡献的更多信息,以及感兴趣的人获得审阅者和维护者角色的路径,请参阅贡献文档。

随着项目的发展势头,维护者将开始创建里程碑,并寻求建立定期的发布节奏。随着时间的推移,我们还将开始根据社区的想法和问题来策划一个公共路线图。我们已经有一些想法,包括:

  • 更小巧的客户机操作系统占用空间
  • 视窗客户端支持
  • Linux 客户端支持
  • 形式扩展性
  • 持续的性能改进
  • 稳定性和可用性改进,持续

如果你想与我们聊天,请在CNCF松弛频道中找到我们。

#finch