Finch — клиент с открытым исходным кодом для разработки контейнеров. Его простой установщик предоставляет минимальный собственный клиент, а также продуманное распространение других компонентов с открытым исходным кодом. Вместо того, чтобы создавать еще больше возможностей для размышлений и выбора, Finch стремится способствовать продвижению других проектов, упрощая их установку и использование, одновременно предлагая простой собственный клиент, который свяжет все это воедино.
Finch предоставляет простой клиент, интегрированный с nerdctl. Что касается основных команд сборки/запуска/толкания/вытягивания, Финч зависит от nerdctl, который справится с тяжелой работой. Он работает с контейнером для управления контейнерами и с BuildKit для обработки сборок образов Open Container Initiative (OCI). Все эти компоненты объединены воедино и запускаются на виртуальной машине, управляемой Lima.
С Finch вы можете использовать существующие проекты, не вдаваясь в подробности. Просто установите и начните создавать свои контейнеры!
В ближайшем будущем проект будет иметь более полный набор документации и учебных пособий. А пока давайте начнем здесь. Как упоминалось выше, finch
интегрируется с nerdctl
. Хотя Finch не реализует 100% исходных команд, наиболее распространенные команды уже установлены и работают. Справочник команд nerdctl можно использовать в качестве отправной точки для документации.
Чтобы начать работу с Finch на macOS, необходимы следующие условия:
Загрузите пакет выпуска для вашей архитектуры со страницы выпусков проекта на GitHub, после загрузки дважды щелкните его и следуйте инструкциям.
brew install --cask finch
Чтобы начать работу с Finch в Windows, необходимы следующие условия:
wsl --install
)Загрузите установщик MSI со страницы выпусков проекта на GitHub, после загрузки дважды щелкните его и следуйте инструкциям.
После завершения установки потребуется один раз выполнить finch vm init
для настройки базовой системы. Первоначальная настройка обычно занимает около минуты.
finch vm init
INFO[0000] Initializing and starting Finch virtual machine...
..
INFO[0067] Finch virtual machine started successfully
Чтобы начать работу с Finch в Linux, необходимы следующие условия:
В настоящее время установщики Finch упаковываются и распространяются на Amazon Linux. Если вы не используете Amazon Linux, вы можете загрузить двоичный файл со страницы выпусков GitHub и установить/настроить зависимости в соответствии с соглашением, указанным в файле finch.spec. Подробные инструкции доступны на runfinch.com.
Теперь вы можете запустить тестовый контейнер. Если вы знакомы с разработкой контейнеров, вы можете использовать команду run
, как и ожидалось.
finch run --rm public.ecr.aws/finch/hello-finch
Если вы новичок в контейнерах, это так интересно! Попробуйте выполнить приведенную выше команду после установки и инициализации Finch. Команда run
извлекает изображение локально, если оно еще не существует, а затем создает и запускает для вас контейнер. Обратите внимание, что удобная опция --rm
удалит экземпляр контейнера после завершения его выполнения.
Чтобы создать образ, попробуйте быстрый пример из репозитория клиента finch.
git clone https://github.com/runfinch/finch.git
cd finch/contrib/hello-finch
finch build . -t hello-finch
..
Опять же, если вы новичок в контейнерах, вы только что создали образ контейнера. Хороший!
Команда build
будет работать с системой сборки (в случае Finch с BuildKit проекта Moby) для создания образа OCI из файла Dockerfile, что представляет собой особый тип рецепта создания образа. Этот образ затем можно использовать для создания контейнеров. Вы можете просмотреть свои локально полученные и созданные изображения с помощью команды finch images
.
Finch упрощает создание и запуск контейнеров на разных архитектурах с помощью опции --platform
. При использовании с командой run
создается контейнер с использованием указанной архитектуры. Например, в системе Apple Silicon M1 --platform=amd64
создаст контейнер и запустит в нем процессы с использованием архитектуры x86-64.
uname -ms
Darwin arm64
finch run --rm --platform=amd64 public.ecr.aws/amazonlinux/amazonlinux uname -ms
Linux x86_64
Вы также можете использовать опцию --platform
со сборками, что упрощает создание мультиплатформенных образов.
У нас есть планы создать здесь дополнительную документацию и учебные пособия, предназначенные для пользователей, которые плохо знакомы с контейнерами, а также несколько советов и рекомендаций для более опытных пользователей. А пока, если вы готовы надрать шины, пожалуйста, сделайте это! Вы найдете большинство команд и опций, с которыми вы знакомы из других инструментов, и представлены так, как вы ожидаете (или как они задокументированы в nerdctl). Описано большинство команд, которые мы используем каждый день, включая управление томами и сетью, а также поддержку Compose. Если Finch не делает того, что вы хотите, рассмотрите возможность открытия проблемы или запроса на включение.
Установщик установит Finch и его зависимости в отдельную область вашей системы, и он может успешно сосуществовать с другими инструментами разработки контейнеров. Finch — это новый проект, который не предназначен для прямой замены других инструментов. Поэтому мы не рекомендуем использовать псевдонимы или связывать другие имена команд с finch
.
Finch имеет простую и расширяемую конфигурацию.
Файл конфигурации ${HOME}/.finch/finch.yaml
будет создан при первом запуске. В настоящее время этот файл конфигурации содержит параметры ограничения системных ресурсов для базовой виртуальной машины. Эти ограничения по умолчанию генерируются динамически на основе ресурсов, доступных в хост-системе, но их можно изменить, отредактировав файл конфигурации вручную.
Полный список параметров конфигурации см. в структуре finch для macOS.
Пример finch.yaml
выглядит так:
# cpus: the amount of vCPU to dedicate to the virtual machine. (required)
cpus : 4
# memory: the amount of memory to dedicate to the virtual machine. (required)
memory : 4GiB
# snapshotters: the snapshotters a user wants to use (the first snapshotter will be set as the default snapshotter)
# Supported Snapshotters List:
# - soci https://github.com/awslabs/soci-snapshotter/tree/main
# Once the option has been set the snapshotters will be installed on either finch vm init or finch vm start.
# The snapshotters binary will be downloaded on the virtual machine and will be configured and ready for use.
# To change your default snpahotter back to overlayfs, simply remove the snapshotters value from finch.yaml or set snapshotters to `overlayfs`
# To completely remove the snapshotters' binaries, shell into your VM and remove /usr/local/bin/{snapshotter binary}
# and remove the snapshotter configuration in the containerd config file found at /etc/containerd/config.toml
snapshotters :
- soci
# creds_helpers: a list of credential helpers that will be installed and configured automatically.
# Supported Credential Helpers List:
# - ecr-login https://github.com/awslabs/amazon-ecr-credential-helper
# Once the option has been set the credential helper will be installed on either finch vm init or finch vm start.
# The binary will be downloaded on the host machine and a config.json will be created and populated inside the ~/.finch/ folder
# if it doesn't already exist. If it already exists, the value of credsStore will be overwritten.
# To opt out of using the credential helper, remove the value from the credsStore parameter of config.json
# and remove the creds_helper value from finch.yaml.
# To completely remove the credential helper, either remove the binary from ~/.finch/creds-helpers or remove the creds-helpers
# folder entirely. (optional)
creds_helpers :
- ecr-login
# additional_directories: the work directories that are not supported by default. In macOS, only home directory is supported by default.
# For example, if you want to mount a directory into a container, and that directory is not under your home directory,
# then you'll need to specify this field to add that directory or any ascendant of it as a work directory. (optional)
additional_directories :
# the path of each additional directory.
- path : /Volumes
# vmType: sets which Hypervisor to use to launch the VM. (optional)
# Only takes effect when a new VM is launched (only on vm init).
# One of: "qemu", "vz".
# - "qemu": Uses QEMU as the Hypervisor.
# - "vz" (default): Uses Virtualization.framework as the Hypervisor.
#
# NOTE: prior to version 1.2.0, "qemu" was the default, and it will still be the default for
# macOS versions that do not support Virtualization.framework (pre-13.0.0).
vmType : " vz "
# rosetta: sets whether to enable Rosetta as the binfmt_misc handler for x86_64
# binaries inside the VM, as an alternative to qemu user mode emulation. (optional)
# Only takes effect when a new VM is launched (only on vm init).
# Only available when using vmType "vz" on Apple Silicon running macOS 13+.
# If true, also sets vmType to "vz".
#
# NOTE: while Rosetta is generally faster than qemu user mode emulation, it causes
# some performance regressions, as noted in this issue:
# https://github.com/lima-vm/lima/issues/1269
rosetta : false
# dockercompat: a configuration parameter to activate finch functionality to accept Docker-like commands and arguments.
# For running DevContainers on Finch, this functionality will convert Docker-like arguments into compatible nerdctl commands and arguments.
dockercompat : true
Файл конфигурации $env:LOCALAPPDATA.finchfinch.yaml
будет создан при первом запуске. В настоящее время в этом файле конфигурации нет параметров ограничения системных ресурсов из-за ограничений WSL.
Полный список параметров конфигурации см. в структуре finch для Windows.
Пример finch.yaml
выглядит так:
# snapshotters: the snapshotters a user wants to use (the first snapshotter will be set as the default snapshotter)
# Supported Snapshotters List:
# - soci https://github.com/awslabs/soci-snapshotter/tree/main
# Once the option has been set the snapshotters will be installed on either finch vm init or finch vm start.
# The snapshotters binary will be downloaded on the virtual machine and will be configured and ready for use.
# To change your default snpahotter back to overlayfs, simply remove the snapshotters value from finch.yaml or set snapshotters to `overlayfs`
# To completely remove the snapshotters' binaries, shell into your VM and remove /usr/local/bin/{snapshotter binary}
# and remove the snapshotter configuration in the containerd config file found at /etc/containerd/config.toml
snapshotters :
- soci
# creds_helpers: a list of credential helpers that will be installed and configured automatically.
# Supported Credential Helpers List:
# - ecr-login https://github.com/awslabs/amazon-ecr-credential-helper
# Once the option has been set the credential helper will be installed on either finch vm init or finch vm start.
# The binary will be downloaded on the host machine and a config.json will be created and populated inside the ~/.finch/ folder
# if it doesn't already exist. If it already exists, the value of credsStore will be overwritten.
# To opt out of using the credential helper, remove the value from the credsStore parameter of config.json
# and remove the creds_helper value from finch.yaml.
# To completely remove the credential helper, either remove the binary from $env:LOCALAPPDATA.finchcreds-helpers or remove the creds-helpers
# folder entirely. (optional)
creds_helpers :
- ecr-login
# sets wsl2 Hypervisor to use to launch the VM. (optional)
vmType : " wsl2 "
# dockercompat: a configuration parameter to activate finch functionality to accept Docker-like commands and arguments.
# For running DevContainers on Finch, this functionality will convert Docker-like arguments into compatible nerdctl commands and arguments.
dockercompat : true
В этом разделе собраны часто задаваемые вопросы по работе с Finch.
LIMA_HOME=/Applications/Finch/lima/data /Applications/Finch/lima/bin/limactl shell finch
wsl -d lima-finch
Мы рады начать этот проект открыто и будем рады услышать ваше мнение. Если у вас есть идеи или вы обнаружили ошибки, пожалуйста, откройте проблему. Пожалуйста, не стесняйтесь начинать обсуждение, если у вас есть что-то, что вы хотели бы предложить или провести мозговой штурм. Запросы на вытягивание также приветствуются! См. документ CONTRIBUTING для получения дополнительной информации о вкладе и пути к ролям рецензента и сопровождающего для тех, кто заинтересован.
По мере того, как проект набирает обороты, сопровождающие начнут устанавливать вехи и стремиться установить регулярную частоту выпусков. Со временем мы также начнем составлять общедоступную дорожную карту на основе идей и проблем сообщества. У нас уже есть некоторые идеи, в том числе:
Если вы хотите пообщаться с нами, найдите нас на канале #finch
на канале CNCF.