Docker Registry存储驱动程序

预计阅读时间:2分钟

该页面包含有关使用开源Docker Registry托管自己的注册表的信息。有关Docker Hub的信息,它提供了托管注册表以及其他功能,例如团队,组织,Web挂钩,自动构建等,请参阅Docker Hub

本文档介绍了注册表存储驱动程序的模型,实现,并说明了如何添加新的存储驱动程序。

提供的驱动程序

该存储驱动程序软件包与以下几个驱动程序捆绑在一起:

存储驱动程序API

存储驱动程序API旨在以足够抽象的方式对类似于文件系统的键/值存储进行建模,以支持从本地文件系统到Amazon S3或其他分布式对象存储系统的一系列驱动程序。

需要存储驱动程序来实现中storagedriver.StorageDriver提供的接口storagedriver.go,该接口包括用于读取,写入和删除内容的方法,以及列出指定前缀键的子对象。

存储驱动程序旨在用Go编写,以提供storagedriver.StorageDriver接口的编译时验证。

驱动程序选择和配置

选择存储驱动程序的首选方法是使用程序包中的StorageDriverFactory接口storagedriver/factory。这些工厂提供了用于使用参数映射构造存储驱动程序的通用接口。工厂模型基于内置数据库/ sql软件包中的RegisterOpen方法。

可以使用该factory.Register方法按名称注册存储驱动程序工厂,然后通过factory.Create 使用驱动程序名称和参数映射进行调用来调用存储驱动程序工厂 。如果找不到这样的存储驱动程序,则 factory.Create返回InvalidStorageDriverError

驱动力贡献

编写新的存储驱动程序

要创建有效的存储驱动程序,必须实现该 storagedriver.StorageDriver接口并确保通过工厂系统公开此驱动程序。

注册

存储驱动程序应factory.Registerinit方法中使用其驱动程序名称进行调用,从而允许的调用者factory.New构造该驱动程序的实例,而无需修改整个代码库中的导入。

测验

存储驱动程序测试套件已提供 storagedriver/testsuites/testsuites.go,可用于任何用Go编写的存储驱动程序。可以使用该RegisterSuite 功能注册测试,该功能针对​​任何已注册的驱动程序运行相同的测试集。

注册表本地图像标签存储库分发存储驱动程序高级