docker注册表amazon aws dynamodb索引数据库
docker-registry-index-dynamodb的Python项目详细描述
[docker注册表](https://github.com/docker/docker-registry)的dynamodb索引。 默认情况下,Docker注册表使用[SqlAlchemy](http://www.sqlalchemy.org/)存储其索引 在关系数据库中。此项目提供一个模块,允许您将索引存储在 [亚马逊AWS动态数据库](http://aws.amazon.com/dynamodb/)。这特别有用 如果你用的是DockerRegistry的AmazonS3驱动程序。带发电机 您将有一个与高可用性映像存储匹配的高可用性索引。
#目录
- [快速启动](快速启动)
- [配置](配置)
- [手动安装](手动安装)
- [实施细节](实施细节)
#快速入门
TOdo-创建docker映像,配置为使用此扩展名。
#配置
查看[docker registry](https://github.com/docker/docker-registry)项目了解有关 正在配置Docker注册表。这个项目使用相同的配置机制 可以将配置添加到Docker注册表使用的相同配置文件中。这个 此代码使用的配置存储在扩展中的Docker注册表配置中 章节:例如:
- common: &common
- # add the following search_backend: docker_registry_index.dynamodb
- extensions:
- dynamodb_index:
- database: _env:DYNAMODB_DATABASE:docker-registry repository_table: _env:DYNAMODB_REPOSITORY_TABLE version_table: _env:DYNAMODB_VERSION_TABLE region: _env:DYNAMODB_REGION access_key: _env:DYNAMODB_ACCESS_KEY secret_access_key: _env:DYNAMODB_SECRET_ACCESS_KEY
如果未指定存储库表,则表名将通过将存储库添加到数据库名称的末尾而形成。如果未指定版本表,则-版本将添加到数据库名称中。注意,dynamodb中没有数据库的概念,这里的数据库名只是在配置中没有指定表名时用作计算表名的前缀。
区域将默认为s3_区域,该区域又默认为“us-east-1”。
访问密钥和秘密访问密钥分别默认为s3u访问密钥和s3u秘密访问密钥的值。如果未指定,则必须通过其他方式配置这些。这段代码使用[boto python interface to amazon web services](https://github.com/boto/boto)访问dynamodb。因此,可以在主目录或/etc中使用boto配置文件。有关详细信息,请参阅[boto配置](http://docs.pythonboto.org/en/latest/)文档。
因此,如果在未指定配置的情况下使用dynamodb,则默认使用'docker registry repository'作为respository_table名称,使用'docker registry version'作为version_table名称。region、access_key和secret_access_key将默认为s3值或boto配置中的任何值。但请记住,您仍然必须将search_backend设置为docker_registry_index.dynamodb。
#手动安装
只需像平常一样安装和运行docker注册表,但首先要确保安装了这个python包(docker注册表索引dynamodb),并将docker注册表配置设置为使用它。
- 正常安装Docker注册表。
- 安装这个python包。 *可从PYPI获得:pip安装Docker注册表索引dynamodb
- 确保Docker注册表配置将search_backend设置为Docker_registry_index.dynamodb。
- 可选设置其他配置,如上面和Docker注册表项目中指定的。
- 运行Docker注册表。 *安装Docker注册表还会安装一个Docker注册表命令。
#实施细节
##启动
启动时,索引类(执行所有工作的类)检查是否配置了DeNoDB表名称,如果没有,则创建它们。
如果创建了表,那么已经位于数据存储中的存储库(可能是s3数据存储)将被加载到存储库表中。这意味着您可以删除dynamodb表,并且它们将在docker注册表启动时重新加载。你可能不应该在Docker注册表运行时删除表,尽管它们只用于查询。
索引构造函数中使用了一个简单的锁,以防止多个线程试图同时创建和/或加载数据库。