Finch est un client open source pour le développement de conteneurs. Son programme d'installation simple fournit un client natif minimal ainsi qu'une distribution avisée d'autres composants open source. Plutôt que de créer encore plus d'options parmi lesquelles réfléchir et choisir, Finch vise à aider à promouvoir d'autres projets en facilitant leur installation et leur utilisation, tout en offrant un client natif simple pour tout relier.
Finch fournit un client simple intégré à nerdctl. Pour les commandes principales build/run/push/pull, Finch dépend de nerdctl pour gérer le gros du travail. Il fonctionne avec containersd pour la gestion des conteneurs et avec BuildKit pour gérer les créations d'images Open Container Initiative (OCI). Ces composants sont tous rassemblés et exécutés dans une machine virtuelle gérée par Lima.
Avec Finch, vous pouvez exploiter ces projets existants sans rechercher tous les détails. Installez simplement et commencez à exécuter et à construire vos conteneurs !
Le projet disposera dans un avenir proche d'un ensemble plus complet de documentation et de didacticiels. Pour l'instant, commençons ici. Comme mentionné ci-dessus, finch
s'intègre à nerdctl
. Bien que Finch n'implémente pas 100 % des commandes en amont, les commandes les plus courantes sont en place et fonctionnent. La référence des commandes nerdctl peut être utilisée comme point de départ pour la documentation.
Pour démarrer avec Finch sur macOS, les prérequis sont :
Téléchargez un package de version pour votre architecture à partir de la page des versions GitHub du projet, puis une fois téléchargé, double-cliquez et suivez les instructions.
brew install --cask finch
Pour démarrer avec Finch sous Windows, les prérequis sont :
wsl --install
)Téléchargez un programme d'installation MSI à partir de la page des versions GitHub du projet, puis une fois téléchargé, double-cliquez et suivez les instructions.
Une fois l'installation terminée, finch vm init
est requis une fois pour configurer le système sous-jacent. Cette configuration initiale prend généralement environ une minute.
finch vm init
INFO[0000] Initializing and starting Finch virtual machine...
..
INFO[0067] Finch virtual machine started successfully
Pour démarrer avec Finch sous Linux, les prérequis sont :
Actuellement, les installateurs Finch sont packagés et distribués sur Amazon Linux. Si vous n'utilisez pas Amazon Linux, vous pouvez télécharger le binaire à partir de la page des versions de GitHub et installer/configurer les dépendances, en suivant la convention du fichier finch.spec. Des instructions détaillées sont disponibles sur runfinch.com.
Vous pouvez maintenant exécuter un conteneur de test. Si vous êtes familier avec le développement de conteneurs, vous pouvez utiliser la commande run
comme prévu.
finch run --rm public.ecr.aws/finch/hello-finch
Si vous débutez avec les conteneurs, c'est tellement excitant ! Essayez la commande ci-dessus après avoir installé et initialisé Finch. La commande run
extrait une image localement si elle n'est pas déjà présente, puis crée et exécute un conteneur pour vous. Notez que l'option pratique --rm
supprimera l'instance de conteneur une fois son exécution terminée.
Pour créer une image, essayez un exemple rapide du référentiel client Finch.
git clone https://github.com/runfinch/finch.git
cd finch/contrib/hello-finch
finch build . -t hello-finch
..
Encore une fois, si vous êtes nouveau dans les conteneurs, vous venez de créer une image de conteneur. Bon!
La commande build
fonctionnera avec le système de construction (le BuildKit du projet Moby dans le cas de Finch) pour créer une image OCI à partir d'un Dockerfile, qui est une sorte de recette spéciale pour créer une image. Cette image peut ensuite être utilisée pour créer des conteneurs. Vous pouvez voir vos images extraites et construites localement avec la commande finch images
.
Finch facilite la création et l'exécution de conteneurs sur plusieurs architectures grâce à l'option --platform
. Lorsqu'il est utilisé avec la commande run
, il créera un conteneur en utilisant l'architecture spécifiée. Par exemple, sur un système Apple Silicon M1, --platform=amd64
créera un conteneur et y exécutera des processus à l'aide d'une architecture x86-64.
uname -ms
Darwin arm64
finch run --rm --platform=amd64 public.ecr.aws/amazonlinux/amazonlinux uname -ms
Linux x86_64
Vous pouvez également utiliser l'option --platform
avec les builds, ce qui facilite la création d'images multiplateformes.
Nous prévoyons de créer ici davantage de documentation et de didacticiels destinés aux utilisateurs qui découvrent les conteneurs, ainsi que des trucs et astuces pour les utilisateurs plus avancés. Pour l’instant, si vous êtes prêt à casser les pneus, faites-le ! Vous trouverez la plupart des commandes et options que vous connaissez dans d'autres outils à présenter, et comme vous vous en doutez (ou, comme elles sont documentées en amont avec nerdctl). La plupart des commandes que nous utilisons quotidiennement sont couvertes, y compris la gestion des volumes et du réseau ainsi que la prise en charge de Compose. Si Finch ne fait pas quelque chose que vous souhaitez, veuillez envisager d'ouvrir un problème ou une pull request.
Le programme d'installation installera Finch et ses dépendances dans sa propre zone de votre système, et il pourra coexister avec d'autres outils de développement de conteneurs. Finch est un nouveau projet et n'est pas destiné à remplacer directement d'autres outils. Par conséquent, nous ne recommandons pas d'aliaser ou de lier d'autres noms de commandes à finch
.
Finch a une configuration simple et extensible.
Un fichier de configuration dans ${HOME}/.finch/finch.yaml
sera généré lors de la première exécution. Actuellement, ce fichier de configuration comporte des options pour les limites de ressources système pour la machine virtuelle sous-jacente. Ces limites par défaut sont générées dynamiquement en fonction des ressources disponibles sur le système hôte, mais peuvent être modifiées en modifiant manuellement le fichier de configuration.
Pour une liste complète des options de configuration, consultez la structure finch pour macOS.
Un exemple finch.yaml
ressemble à ceci :
# 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
Un fichier de configuration dans $env:LOCALAPPDATA.finchfinch.yaml
sera généré lors de la première exécution. Actuellement, ce fichier de configuration ne dispose pas d'options pour les limites de ressources système en raison des limitations de WSL.
Pour une liste complète des options de configuration, consultez la structure finch pour Windows.
Un exemple finch.yaml
ressemble à ceci :
# 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
Cette section contient les questions fréquemment posées concernant l'utilisation de Finch.
LIMA_HOME=/Applications/Finch/lima/data /Applications/Finch/lima/bin/limactl shell finch
wsl -d lima-finch
Nous sommes ravis de démarrer ce projet ouvertement et nous serions ravis d’avoir de vos nouvelles. Si vous avez des idées ou trouvez des bugs, veuillez ouvrir un problème. N'hésitez pas à lancer une discussion si vous avez quelque chose que vous aimeriez proposer ou réfléchir. Les demandes de tirage sont également les bienvenues ! Consultez le document CONTRIBUTION pour plus d'informations sur la contribution et le chemin vers les rôles de réviseur et de responsable pour les personnes intéressées.
Au fur et à mesure que le projet prend de l'ampleur, les responsables commenceront à créer des jalons et chercheront à établir une cadence de publication régulière. Avec le temps, nous commencerons également à élaborer une feuille de route publique à partir des idées et des problèmes de la communauté. Nous avons déjà quelques idées, notamment :
Si vous souhaitez discuter avec nous, retrouvez-nous sur la chaîne #finch
sur le slack CNCF.