AWS Open Source Blog

Finch Container Development Tool: Now for Windows

In November 2022, AWS announced a new command line developer tool for container developers, Finch. Almost one year later we reached an important milestone in the maturity of the project with our Finch 1.0 release. Finch provides local developer tools so that container developers can work with Linux containers on non-Linux operating systems, initially available for macOS. Today we’re excited to announce a significant additional milestone for the project: Windows operating system support! With this added support, container developers on Windows can easily install Finch and build, run, and publish containers using the same familiar command line available to Finch users on macOS. Now Linux container developers using either macOS or Windows-based devices can locally develop, test, and publish their Linux containers. Windows packages are available to install today from Finch release 1.1.1.

We started our Windows support journey by contributing an experimental Windows Subsystem for Linux (WSL2) driver to Lima, one of the core components of Finch. Windows support was a long standing feature request for Lima (as seen in these Lima issues). A WSL2 driver was not the only option for adding Windows support to Lima. Our initial contribution to the Lima community was discussing the tradeoffs between using HyperV, QEMU for Windows, or WSL2 with the Lima maintainers. One significant benefit of WSL2 is that it works on any recent edition of Windows. Beyond initial agreement on the path forward, adding the WSL2 driver to Lima had some challenges due to the magnitude of the change and unique differences between a WSL2 driver and existing Lima drivers. For those interested in a deep dive on these challenges, there is a lot more detail on the WSL2 driver implementation for Lima in the pull request linked above.

After completion of this upstream feature, we have spent the last few months integrating full Windows support into Finch. With support for both macOS and Windows, Finch now provides the same command line developer tools no matter which operating system developers use. This initial release with Windows support creates a WSL2 Linux distribution named finch-lima. Finch commands and functionality are available when the user is inside this WSL2 distribution, and will not be accessible from the user’s other WSL2 distributions. We plan to make finch commands accessible from all WSL2 distributions in an upcoming enhancement to our Windows support.

Installing Finch on Windows

For Windows users, the path to installing Finch is straightforward. First, ensure that WSL2 is enabled on your system. If you are using the latest versions of Windows 10 and 11, this is as simple as running wsl --install in your terminal window (as an aside: Microsoft’s Windows Terminal is a great way to interact with Finch and WSL2 in general). Note that if you are not on the latest Windows 10 version, WSL2 requires a minimum version 2004 (build 19041 or higher). If you get stuck there’s a useful detailed guide from Microsoft on how to enable WSL2 here.

With WSL2 installed, you can simply visit the Finch “Releases” page on GitHub and download the MSI installer corresponding to the latest Finch release. After running the installer, relaunch your terminal (to verify your PATH is updated post-install) and feel free to follow our Getting Started guide.

Getting Started and Contributing to Finch

As noted above, Finch now has a website with comprehensive documentation that serves as a central hub for Finch-related information, tutorials, and other resources to help developers get started with Finch. If you are new to Finch, refer to the Getting Started section on the Finch website to start using Finch for local container development on Windows. In addition to our new support for Windows in the project, the website has been updated with additional content for Windows-specific topics related to installation and support.

As we have reiterated in prior blog posts on Finch, the project is open source. All development and discussions take place within our GitHub repositories, and we invite anyone to contribute ideas, bug reports, and pull requests. We are looking forward to more community meetings on topics of interest to community members and users of Finch, including from our new users on Windows!

Please reach out and let us know what you think would make Finch better as we move forward with the project. We are available in the Cloud Native Computing Foundation (CNCF) Slack workspace in the #finch channel to discuss any feedback or ideas. You can also reach us via GitHub issues or discussions in our main repository.  A release video from Containers from the Couch is also available where you can hear directly from the project maintainers about the new release.

Justin Alvarez

Justin Alvarez

Justin Alvarez is a Software Developer for Amazon Web Services (AWS) with experience working on several container related projects and services. Currently, Justin is focusing on Finch, including contributing to upstream projects like nerdctl and Lima.

Phil Estes

Phil Estes

Phil Estes is a Principal Engineer for Amazon Web Services (AWS), focused on core container technologies that power AWS container offerings like Fargate, EKS, and ECS. Phil is currently an active contributor and maintainer for the CNCF containerd runtime project, and participates in the Open Container Initiative (OCI) as the member of the Technical Oversight Board (TOB). Phil has also been a long-time core contributor and maintainer on the Docker/Moby engine project where he contributed key features like user namespace support and multi-platform image capabilities.