Finch ist ein Open-Source-Client für die Containerentwicklung. Sein einfacher Installer bietet einen minimalen nativen Client zusammen mit einer durchdachten Distribution anderer Open-Source-Komponenten. Anstatt noch mehr Optionen zum Nachdenken und Auswählen zu schaffen, möchte Finch dazu beitragen, andere Projekte zu fördern, indem es die Installation und Verwendung vereinfacht und gleichzeitig einen einfachen nativen Client anbietet, um alles miteinander zu verbinden.
Finch bietet einen einfachen Client, der in nerdctl integriert ist. Für die Kernbefehle „Build/Run/Push/Pull“ verlässt sich Finch auf nerdctl, um die schwere Arbeit zu bewältigen. Es funktioniert mit Containerd für die Containerverwaltung und mit BuildKit für die Verarbeitung von OCI-Image-Builds (Open Container Initiative). Diese Komponenten werden alle zusammengeführt und in einer von Lima verwalteten virtuellen Maschine ausgeführt.
Mit Finch können Sie diese bestehenden Projekte nutzen, ohne sich um alle Details kümmern zu müssen. Installieren Sie einfach und beginnen Sie mit der Ausführung und dem Aufbau Ihrer Container!
Das Projekt wird in naher Zukunft über eine umfassendere Dokumentation und Tutorials verfügen. Beginnen wir zunächst hier. Wie oben erwähnt, lässt sich finch
in nerdctl
integrieren. Obwohl Finch nicht 100 % der Upstream-Befehle implementiert, sind die gängigsten Befehle vorhanden und funktionieren. Die nerdctl-Befehlsreferenz kann als Ausgangspunkt für die Dokumentation herangezogen werden.
Um mit Finch unter macOS zu beginnen, sind die Voraussetzungen:
Laden Sie ein Release-Paket für Ihre Architektur von der GitHub-Release-Seite des Projekts herunter, doppelklicken Sie nach dem Herunterladen und folgen Sie den Anweisungen.
brew install --cask finch
Um mit Finch unter Windows zu beginnen, sind folgende Voraussetzungen erforderlich:
wsl --install
)Laden Sie ein MSI-Installationsprogramm von der GitHub-Release-Seite des Projekts herunter, doppelklicken Sie nach dem Herunterladen und folgen Sie den Anweisungen.
Nach Abschluss der Installation ist einmalig finch vm init
erforderlich, um das zugrunde liegende System einzurichten. Diese Ersteinrichtung dauert normalerweise etwa eine Minute.
finch vm init
INFO[0000] Initializing and starting Finch virtual machine...
..
INFO[0067] Finch virtual machine started successfully
Um mit Finch unter Linux zu beginnen, sind folgende Voraussetzungen erforderlich:
Derzeit werden Finch-Installationsprogramme auf Amazon Linux gepackt und verteilt. Wenn Sie Amazon Linux nicht verwenden, können Sie die Binärdatei von der GitHub-Versionsseite herunterladen und die Abhängigkeiten gemäß der Konvention in der Datei „finch.spec“ installieren/konfigurieren. Detaillierte Anweisungen finden Sie auf runfinch.com.
Sie können jetzt einen Testcontainer ausführen. Wenn Sie mit der Containerentwicklung vertraut sind, können Sie den Befehl run
wie gewohnt verwenden.
finch run --rm public.ecr.aws/finch/hello-finch
Wenn Sie neu im Umgang mit Containern sind, ist das so aufregend! Probieren Sie den obigen Befehl aus, nachdem Sie Finch installiert und initialisiert haben. Der Befehl run
ruft ein Image lokal ab, sofern es noch nicht vorhanden ist, und erstellt dann einen Container für Sie und führt ihn aus. Beachten Sie, dass die praktische Option --rm
die Containerinstanz löscht, sobald die Ausführung abgeschlossen ist.
Um ein Image zu erstellen, versuchen Sie es mit einem kurzen Beispiel aus dem Finch-Client-Repository.
git clone https://github.com/runfinch/finch.git
cd finch/contrib/hello-finch
finch build . -t hello-finch
..
Auch hier gilt: Wenn Sie neu im Umgang mit Containern sind, haben Sie gerade ein Container-Image erstellt. Hübsch!
Der build
Befehl arbeitet mit dem Build-System (im Fall von Finch dem BuildKit des Moby-Projekts) zusammen, um ein OCI-Image aus einer Docker-Datei zu erstellen. Dabei handelt es sich um eine spezielle Art von Rezept zum Erstellen eines Images. Dieses Bild kann dann zum Erstellen von Containern verwendet werden. Sie können Ihre lokal gezogenen und erstellten Bilder mit dem Befehl finch images
anzeigen.
Mit der Option --platform
erleichtert Finch das Erstellen und Ausführen von Containern über Architekturen hinweg. Bei Verwendung mit dem Befehl run
wird ein Container mit der angegebenen Architektur erstellt. Beispielsweise erstellt --platform=amd64
auf einem Apple Silicon M1-System einen Container und führt darin Prozesse unter Verwendung einer x86-64-Architektur aus.
uname -ms
Darwin arm64
finch run --rm --platform=amd64 public.ecr.aws/amazonlinux/amazonlinux uname -ms
Linux x86_64
Sie können auch die Option --platform
mit Builds verwenden, um die Erstellung von Multiplattform-Images zu vereinfachen.
Wir planen, hier weitere Dokumentationen und Tutorials zu erstellen, die sich an Benutzer richten, die neu im Umgang mit Containern sind, sowie einige Tipps und Tricks für fortgeschrittenere Benutzer. Wenn Sie vorerst bereit sind, auf die Reifen zu treten, dann tun Sie es bitte! Hier finden Sie die meisten Befehle und Optionen, die Sie von anderen Tools kennen, und zwar so, wie Sie es erwarten (oder wie sie vorab mit nerdctl dokumentiert sind). Die meisten Befehle, die wir täglich verwenden, werden abgedeckt, einschließlich der Lautstärke- und Netzwerkverwaltung sowie der Compose-Unterstützung. Wenn Finch etwas nicht tut, was Sie möchten, ziehen Sie bitte in Betracht, ein Problem oder eine Pull-Anfrage zu eröffnen.
Das Installationsprogramm installiert Finch und seine Abhängigkeiten in einem eigenen Bereich Ihres Systems und kann problemlos mit anderen Container-Entwicklungstools koexistieren. Finch ist ein neues Projekt und nicht als direkter Ersatz für andere Tools gedacht. Daher empfehlen wir nicht, andere Befehlsnamen mit finch
zu aliasen oder zu verknüpfen.
Finch verfügt über eine einfache und erweiterbare Konfiguration.
Bei der ersten Ausführung wird eine Konfigurationsdatei unter ${HOME}/.finch/finch.yaml
generiert. Derzeit enthält diese Konfigurationsdatei Optionen für Systemressourcenlimits für die zugrunde liegende virtuelle Maschine. Diese Standardgrenzen werden dynamisch basierend auf den auf dem Hostsystem verfügbaren Ressourcen generiert, können jedoch durch manuelles Bearbeiten der Konfigurationsdatei geändert werden.
Eine vollständige Liste der Konfigurationsoptionen finden Sie in der Finch-Struktur für macOS.
Ein Beispiel für finch.yaml
sieht so aus:
# 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
Bei der ersten Ausführung wird eine Konfigurationsdatei unter $env:LOCALAPPDATA.finchfinch.yaml
generiert. Derzeit verfügt diese Konfigurationsdatei aufgrund von Einschränkungen in der WSL nicht über Optionen für Systemressourcenlimits.
Eine vollständige Liste der Konfigurationsoptionen finden Sie in der Finch-Struktur für Windows.
Ein Beispiel für finch.yaml
sieht so aus:
# 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
Dieser Abschnitt enthält häufig gestellte Fragen zur Arbeit mit Finch.
LIMA_HOME=/Applications/Finch/lima/data /Applications/Finch/lima/bin/limactl shell finch
wsl -d lima-finch
Wir freuen uns, dieses Projekt öffentlich zu starten, und würden uns freuen, von Ihnen zu hören. Wenn Sie Ideen haben oder Fehler finden, eröffnen Sie bitte ein Problem. Bitte starten Sie eine Diskussion, wenn Sie etwas vorschlagen oder ein Brainstorming durchführen möchten. Auch Pull-Requests sind willkommen! Weitere Informationen zum Mitwirken und den Weg zu Prüfer- und Betreuerrollen für Interessierte finden Sie im Dokument „CONTRIBUTING“.
Wenn das Projekt etwas Fahrt aufnimmt, werden die Betreuer damit beginnen, Meilensteine zu setzen und einen regelmäßigen Veröffentlichungsrhythmus zu etablieren. Mit der Zeit werden wir auch damit beginnen, eine öffentliche Roadmap aus den Ideen und Problemen der Community zu erstellen. Wir haben bereits einige Ideen, darunter:
Wenn Sie mit uns chatten möchten, finden Sie uns bitte im #finch
-Kanal im CNCF-Slack.