We are excited to announce that the latest BuildKit release v0.13.0 contains experimental Windows Containers support. BuildKit is a toolkit for converting source code to build artifacts (like container images) in an efficient, expressive, and repeatable manner. Since 2018, Windows Container customers have been asking for Windows support for BuildKit as seen in the BuildKit repo and Windows Containers repo with hundreds of reactions and comments. We have listened to our users and focused resources in the past year to lighting up Windows Containers support on BuildKit.
Previously, there was partial Windows support with buildctl.exe client, but we now have experimental Windows Containers support with buildkit.exe. BuildKit provides many benefits over the traditional Docker build engine including the following:
- When possible, BuildKit automatically runs build steps in parallel and allows for parallel multistage builds causing performance improvements in speed.
- BuildKit improves on the traditional Docker caching model by optimizing access to local files, tracking changes, and only copying modified files.
- BuildKit utilizes commands similar to docker build allowing developers to easily transition over.
How to Get Started with BuildKit
We encourage users to test out the released experimental Windows BuildKit support v0.13.0. To start out, feel free to follow the documentation or companion blog which will walk you through building a simple Windows Containers image with BuildKit. Please file feedback and issues here tagged with area/windows.
Next Steps
In the upcoming months, we will be working towards a stable release for the current supported features including:
- adding more integration tests
- releasing more documentation and
- identifying, accessing, and closing the feature parity gap between Windows and Linux
We recognize with the experimental release that features supported on Linux are not currently supported on Windows. We have identified some areas to explore and test as follows:
- Image outputs: There are image outputs supported by Linux that may not work on Windows that need to be tested and assessed. These include exporting an image to multiple registries, checking if keys for image output are supported, and testing multi-platform image building support.
- OCI worker support: On Linux, there is an option to run BuildKit with only runc using the OCI worker. Currently, only the containerd worker is supported for Windows.
- Building other artifacts: BuildKit can be used to build artifacts beyond container images. Work needs to be done in this area to cross-check if other artifacts such as binaries, libraries, and documentation are also supported on Windows as they are on Linux.
- Running buildkitd rootless: Currently, running buildkitd on Windows requires admin privileges. We will be looking into running buildkitd on low privileges aka “rootless”.
- Export cache: Investigations need to be done to confirm if specific cache exporters (inline, registry, local, gha (GitHub Actions), 3, azblob) are supported on Windows as well.
We welcome your contributions and feedback in the areas identified above. Please feel free to open a PR or ticket at github.com/moby/buildkit. For the latest conversations on Windows Containers support on BuildKit, please visit the area/windows tag.
Thank You
A big thanks to @gabriel-samfira, @TBBle, @tonistiigi, @AkihiroSuda, @crazy-max, @jedevc, @thaJeztah, @profnandaa, @iankingori, and many other key community members who have contributed to enabling Windows Containers support on BuildKit. In addition, we would also like to thank Windows Container developers who continue to provide valuable feedback and insights.
Please visit the companion blog to build your first Windows Containers image with BuildKit and continue to support us at github.com/moby/buildkit.