CRFS:容器注册表文件系统
讨论: https://github.com/golang/go/issues/30829
CRFS 是一个只读的 FUSE 文件系统,可让您挂载一个 容器镜像,直接从容器注册表(如 gcr.io, 而不需要先在本地拉取它。
启动一个容器应该很快。然而,目前在许多环境中,要启动一个容器,需要从容器注册服务器进行 pull 操作,从注册服务器读取整个容器镜像,并将整个容器镜像写入本地机器的磁盘。读取操作变成写入操作是非常愚蠢的(而且浪费资源)。对于小型容器,这个问题很少被注意到。但是对于大型容器,pull 操作很快就成为启动容器的最慢环节,尤其是在冷启动节点上。与在主要云提供商上启动虚拟机相比,这种情况有很大的差异:即使是几百 GB 的虚拟机镜像,虚拟机也能在几秒钟内启动。这是因为虚拟化平台的块设备根据需要从网络中读取数据。各大云提供商都拥有强大的内部网络。为什么我们不利用这些强大的内部网络来根据需要读取容器镜像呢?
Go 的持续构建系统在 多个操作系统和架构 上进行测试,使用混合的容器(主要用于 Linux)和虚拟机(用于其他操作系统)。我们优先考虑快速构建,在测试新更改时,目标是 5 分钟的回应时间。出于隔离和其他原因,我们在单一使用的新 VM 中运行所有容器。一般来说,我们的容器启动速度很快,但我们的一些容器非常大,启动需要很长时间。为了解决这个问题,我们自动化了虚拟机镜像的创建,其中我们的大型容器已提前下载。这一切都是一个愚蠢的工作绕行。如果我们能够直接从正确的位置通过网络读取字节,而无需所有这些麻烦,那就会好得多。
暂无开放 Issues,或尚未同步最近议题。