Docker Registry存储驱动程序
预计阅读时间:2分钟
该页面包含有关使用开源Docker Registry托管自己的注册表的信息。有关Docker Hub的信息,它提供了托管注册表以及其他功能,例如团队,组织,Web挂钩,自动构建等,请参阅Docker Hub。
本文档介绍了注册表存储驱动程序的模型,实现,并说明了如何添加新的存储驱动程序。
提供的驱动程序
该存储驱动程序软件包与以下几个驱动程序捆绑在一起:
- inmemory:使用本地inmemory地图的临时存储驱动程序。这仅供参考和测试。
- filesystem:本地存储驱动程序,配置为使用本地文件系统中的目录树。
- s3:将对象存储在Amazon Simple Storage Service(S3)存储桶中的驱动程序。
- azure:在Microsoft Azure Blob存储中存储对象的驱动程序。
- swift:在Openstack Swift中存储对象的驱动程序。
- oss:在Aliyun OSS中存储对象的驱动程序。
- gcs:将对象存储在Google Cloud Storage存储桶中的驱动程序。
存储驱动程序API
存储驱动程序API旨在以足够抽象的方式对类似于文件系统的键/值存储进行建模,以支持从本地文件系统到Amazon S3或其他分布式对象存储系统的一系列驱动程序。
需要存储驱动程序来实现中storagedriver.StorageDriver
提供的接口storagedriver.go
,该接口包括用于读取,写入和删除内容的方法,以及列出指定前缀键的子对象。
存储驱动程序旨在用Go编写,以提供storagedriver.StorageDriver
接口的编译时验证。
驱动程序选择和配置
选择存储驱动程序的首选方法是使用程序包中的StorageDriverFactory
接口storagedriver/factory
。这些工厂提供了用于使用参数映射构造存储驱动程序的通用接口。工厂模型基于内置数据库/ sql软件包中的Register和Open方法。
可以使用该factory.Register
方法按名称注册存储驱动程序工厂,然后通过factory.Create
使用驱动程序名称和参数映射进行调用来调用存储驱动程序工厂
。如果找不到这样的存储驱动程序,则
factory.Create
返回InvalidStorageDriverError
。
驱动力贡献
编写新的存储驱动程序
要创建有效的存储驱动程序,必须实现该
storagedriver.StorageDriver
接口并确保通过工厂系统公开此驱动程序。
注册
存储驱动程序应factory.Register
在init
方法中使用其驱动程序名称进行调用,从而允许的调用者factory.New
构造该驱动程序的实例,而无需修改整个代码库中的导入。
测验
存储驱动程序测试套件已提供
storagedriver/testsuites/testsuites.go
,可用于任何用Go编写的存储驱动程序。可以使用该RegisterSuite
功能注册测试,该功能针对任何已注册的驱动程序运行相同的测试集。