一句话:总结 Docker Desktop 用 OCaml unikernel 在非 Linux 主机上支撑容器网络十年的工程经验。
本文是一篇经验报告,关注 Docker Desktop 如何在 Mac 和 Windows 等非 Linux 主机上无缝运行 Linux 容器。其方法是将虚拟化与 OCaml unikernel 结合,把函数式 OCaml 代码深度集成到容器架构中。作者回顾了十年来将该代码发布到数亿级开发者桌面上的生产实践,讨论了这一过程中的工程教训。结论指出,unikernel 方法非常适合系统编程,尤其是与 OCaml 的模块系统和类型系统结合时。
Docker is a developer tool used by millions of developers to build, share and run software stacks. The Docker Desktop clients for Mac and Windows have long used a novel combination of virtualisation and OCaml unikernels to seamlessly run Linux containers on these non-Linux hosts. We reflect on a decade of shipping this functional OCaml code into production across hundreds of millions of developer desktops, and discuss the lessons learnt from our experiences in integrating OCaml deeply into the container architecture that now drives much of the global cloud. We conclude by observing just how good a fit for systems programming that the unikernel approach has been, particularly when combined with the OCaml module and type system.
@article{paperbot3037,
title = {Functional Networking for Millions of Docker Desktops (Experience Report)},
author = {Anil Madhavapeddy and David J. Scott and Patrick Ferris and Ryan T. Gibb and Thomas Gazagnaire},
journal = {Proceedings of the ACM on Programming Languages},
volume = {9},
number = {ICFP},
year = {2025},
doi = {10.1145/3747525}
}