Finch es un cliente de código abierto para el desarrollo de contenedores. Su sencillo instalador proporciona un cliente nativo mínimo junto con una distribución objetiva de otros componentes de código abierto. En lugar de crear aún más opciones para razonar y elegir, Finch pretende ayudar a promover otros proyectos facilitando su instalación y uso, al tiempo que ofrece un cliente nativo simple para unirlo todo.
Finch proporciona un cliente sencillo que está integrado con nerdctl. Para los comandos principales de construir/ejecutar/empujar/tirar, Finch depende de nerdctl para manejar el trabajo pesado. Funciona con Containerd para la gestión de contenedores y con BuildKit para gestionar las compilaciones de imágenes de Open Container Initiative (OCI). Todos estos componentes se reúnen y ejecutan dentro de una máquina virtual administrada por Lima.
Con Finch, puede aprovechar estos proyectos existentes sin tener que buscar todos los detalles. ¡Simplemente instálelo y comience a ejecutar y construir sus contenedores!
En un futuro próximo, el proyecto tendrá un conjunto más completo de documentación y tutoriales. Por ahora comencemos aquí. Como se mencionó anteriormente, finch
se integra con nerdctl
. Si bien Finch no implementa el 100% de los comandos ascendentes, los comandos más comunes están implementados y funcionando. Se puede confiar en la referencia del comando nerdctl como punto de partida para la documentación.
Para comenzar con Finch en macOS, los requisitos previos son:
Descargue un paquete de lanzamiento para su arquitectura desde la página de lanzamientos de GitHub del proyecto y, una vez descargado, haga doble clic y siga las instrucciones.
brew install --cask finch
Para comenzar a utilizar Finch en Windows, los requisitos previos son:
wsl --install
)Descargue un instalador MSI desde la página de versiones de GitHub del proyecto y, una vez descargado, haga doble clic y siga las instrucciones.
Una vez que se completa la instalación, se requiere finch vm init
una vez para configurar el sistema subyacente. Esta configuración inicial suele tardar aproximadamente un minuto.
finch vm init
INFO[0000] Initializing and starting Finch virtual machine...
..
INFO[0067] Finch virtual machine started successfully
Para comenzar con Finch en Linux, los requisitos previos son:
Actualmente, los instaladores de Finch están empaquetados y distribuidos en Amazon Linux. Si no está utilizando Amazon Linux, puede descargar el binario desde la página de lanzamientos de GitHub e instalar/configurar las dependencias, siguiendo la convención en el archivo finch.spec. Las instrucciones detalladas están disponibles en runfinch.com.
Ahora puede ejecutar un contenedor de prueba. Si está familiarizado con el desarrollo de contenedores, puede utilizar el comando run
como era de esperar.
finch run --rm public.ecr.aws/finch/hello-finch
Si eres nuevo en el mundo de los contenedores, ¡es muy emocionante! Pruebe el comando anterior después de haber instalado e inicializado Finch. El comando run
extrae una imagen localmente si aún no está presente y luego crea y ejecuta un contenedor por usted. Tenga en cuenta que la práctica opción --rm
eliminará la instancia del contenedor una vez que haya terminado de ejecutarse.
Para crear una imagen, pruebe con un ejemplo rápido del repositorio del cliente finch.
git clone https://github.com/runfinch/finch.git
cd finch/contrib/hello-finch
finch build . -t hello-finch
..
Nuevamente, si es nuevo en el mundo de los contenedores, acaba de crear una imagen de contenedor. ¡Lindo!
El comando build
funcionará con el sistema de compilación (el BuildKit del Proyecto Moby en el caso de Finch) para crear una imagen OCI a partir de un Dockerfile, que es un tipo especial de receta para crear una imagen. Esta imagen luego se puede utilizar para crear contenedores. Puede ver sus imágenes extraídas y creadas localmente con el comando finch images
.
Finch facilita la creación y ejecución de contenedores en arquitecturas con la opción --platform
. Cuando se usa con el comando run
, creará un contenedor usando la arquitectura especificada. Por ejemplo, en un sistema Apple Silicon M1, --platform=amd64
creará un contenedor y ejecutará procesos dentro de él utilizando una arquitectura x86-64.
uname -ms
Darwin arm64
finch run --rm --platform=amd64 public.ecr.aws/amazonlinux/amazonlinux uname -ms
Linux x86_64
También puedes usar la opción --platform
con compilaciones, lo que facilita la creación de imágenes multiplataforma.
Tenemos planes de crear más documentación y tutoriales aquí dirigidos a usuarios nuevos en el uso de contenedores, así como algunos consejos y trucos para usuarios más avanzados. Por ahora, si estás listo para patear los neumáticos, ¡hazlo! Encontrará la mayoría de los comandos y opciones con los que está familiarizado en otras herramientas para presentar, y como era de esperar (o, como están documentados anteriormente con nerdctl). Se cubren la mayoría de los comandos que usamos todos los días, incluida la administración de volumen y red, así como la compatibilidad con Compose. Si Finch no hace algo que usted desea, considere abrir un problema o una solicitud de extracción.
El instalador instalará Finch y sus dependencias en su propia área de su sistema y podrá coexistir felizmente con otras herramientas de desarrollo de contenedores. Finch es un proyecto nuevo y no pretende ser un reemplazo directo de otras herramientas. Por lo tanto, no recomendamos crear alias ni vincular otros nombres de comandos a finch
.
Finch tiene una configuración simple y extensible.
Se generará un archivo de configuración en ${HOME}/.finch/finch.yaml
en la primera ejecución. Actualmente, este archivo de configuración tiene opciones para los límites de recursos del sistema para la máquina virtual subyacente. Estos límites predeterminados se generan dinámicamente en función de los recursos disponibles en el sistema host, pero se pueden cambiar editando manualmente el archivo de configuración.
Para obtener una lista completa de opciones de configuración, consulte la estructura finch para macOS.
Un ejemplo de finch.yaml
se ve así:
# 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
En la primera ejecución se generará un archivo de configuración en $env:LOCALAPPDATA.finchfinch.yaml
. Actualmente, este archivo de configuración no tiene opciones para límites de recursos del sistema debido a limitaciones en WSL.
Para obtener una lista completa de opciones de configuración, consulte la estructura finch para Windows.
Un ejemplo de finch.yaml
se ve así:
# 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
Esta sección contiene preguntas frecuentes sobre cómo trabajar con Finch.
LIMA_HOME=/Applications/Finch/lima/data /Applications/Finch/lima/bin/limactl shell finch
wsl -d lima-finch
Estamos emocionados de comenzar este proyecto abiertamente y nos encantaría saber de usted. Si tiene ideas o encuentra errores, abra un problema. No dude en iniciar una discusión si tiene algo que le gustaría proponer o intercambiar ideas. ¡Las solicitudes de extracción también son bienvenidas! Consulte el documento CONTRIBUCIÓN para obtener más información sobre cómo contribuir y el camino hacia los roles de revisor y mantenedor para aquellos interesados.
A medida que el proyecto adquiera un poco de impulso, los mantenedores comenzarán a crear hitos y buscarán establecer una cadencia de lanzamiento regular. Con el tiempo, también comenzaremos a seleccionar una hoja de ruta pública a partir de las ideas y problemas de la comunidad que surjan. Ya tenemos algunas ideas, que incluyen:
Si desea conversar con nosotros, encuéntrenos en el canal #finch
en CNCF slack.