2015-11-10 2 views
3

Я пытаюсь развернуть резервный приватный реестр для док-станции под управлением S3, и я получаю сообщение об ошибке при попытке запустить контейнер реестра. Мой докер-compose.yml выглядит следующим образом:Несколько драйверов хранилищ panic в частном реестре

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 

Похоже, я что-то не хватает в моей среде явно выберите s3, но из документов не ясно, как это сделать.

ответ

9

Я пытался переопределить конфигурацию хранилища, используя ENV vars. Это решение сделало работу (в формате 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.

2

Вы получаете эту ошибку, поскольку изображение registry:2 поставляется с файлом конфигурации по умолчанию /etc/docker/registry/config.yml, который использует хранилище файловой системы.

Добавляя хранилище S3 с использованием переменных среды, есть несколько драйверов хранения, которые, как я полагаю, не поддерживаются.

Я не знаю ни одного способа, чтобы удалить параметры конфигурации с переменными окружения, поэтому я думаю, что вам, возможно, потребуется создать конфигурационный файл и установить его в качестве тома (http://docs.docker.com/registry/configuration/#overriding-the-entire-configuration-file)

0

Мне удалось получить эту работу с использованием переменных среды. Вот отрывок из моего сценария:

 -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 \ 
0

В моем случае я имел переменные среды для данных в Докер-compose.yml & конфигурация S3 в config.yml. Это заняло некоторое время, но после того, как переменные окружения закомментированы, реестр: 2 начал правильно.

Смежные вопросы