多个存储驱动程序在私人registry中恐慌

我试图部署一个S3支持的私人dockerregistry,当我尝试启动registry容器时出现错误。 我的docker-compose.yml如下所示:

registry: restart: always image: registry:2 ports: - 5000:5000 environment: REGISTRY_STORAGE_S3_ACCESSKEY: myKey REGISTRY_STORAGE_S3_SECRETKEY: mySecret REGISTRY_STORAGE_S3_BUCKET: docker.registry.bucket REGISTRY_STORAGE_S3_ROOTDIRECTORY: registry/data volumes: - /home/docker/certs:/certs 

当我尝试运行sudo docker-compose up -d我得到这个错误信息:

 registry_1 | panic: multiple storage drivers specified in configuration or environment: s3, filesystem 

似乎我错过了我的环境中明确selects3的东西,但从文档中不清楚如何做到这一点。

我试图通过使用ENVvariables来覆盖存储configuration。 这个解决方法做了这个工作(以json格式):

 { "REGISTRY_STORAGE": "s3", "REGISTRY_STORAGE_S3_REGION": <REGION>, "REGISTRY_STORAGE_S3_BUCKET": <BUCKET_NAME>, "REGISTRY_STORAGE_S3_ROOTDIRECTORY": <ROOT_PATH>, "REGISTRY_STORAGE_S3_ACCESSKEY": <KEY>, "REGISTRY_STORAGE_S3_SECRETKEY": <SECRET> } 

它看起来像通过定义REGISTRY_STORAGE我们覆盖config.yml的一个。

你得到这个错误,因为registry:2映像带有默认configuration文件/etc/docker/registry/config.yml它使用文件系统存储。

通过使用环境variables添加S3存储,有多个存储驱动程序,我猜不支持。

我不知道有什么办法来删除环境variables的configuration选项,所以我想你可能需要创build一个configuration文件,并将其挂载为一个卷( http://docs.docker.com/registry/configuration/ #覆盖整个configuration文件 )

我能够使用环境variables得到这个工作。 以下是我的脚本中的片段:

  -e REGISTRY_STORAGE=s3 \ -e REGISTRY_STORAGE_S3_ACCESSKEY=$AWS_KEY \ -e REGISTRY_STORAGE_S3_SECRETKEY=$AWS_SECRET \ -e REGISTRY_STORAGE_S3_BUCKET=$BUCKET \ -e REGISTRY_STORAGE_S3_REGION=$AWS_REGION \ -e REGISTRY_STORAGE_S3_ROOTDIRECTORY=$BUCKET_PATH \ 

在我的情况下,我有一个在config.yml中docker-compose.yml和S3configuration数据的环境variables。 花了一些时间,但一旦环境variables被注释掉,registry:2正确启动。