2014-09-12 4 views
0

Я создал свой приватный реестр docker, работающий на localhost:5000/v1, но не предоставляет аутентификацию. Как получить имя пользователя и пароль, чтобы только авторизованные пользователи могли нажимать на него изображение.Создание пользовательского реестра docker для частного пользователя

Я также не в состоянии перечислить все изображения, присутствующих в частном реестре, все документ говорит работает ниже команда выведет его localhost:5000/v1/search, но это дает пустой ответ JSon как:

{ 
    "num_results": 0, 
    "query": "", 
    "results": [] 
} 

Как решить эту проблему?

Спасибо, Яш

ответ

1

Ответ на первый вопрос: Вы должны использовать что-то вроде nginx перед реестром, чтобы сделать фактическую проверку пароля. Существуют примерные файлы конфигурации nginx для pre-1.3.9 nginx и later versions в Docker Registry Github repo для переноса реестра с помощью nginx; есть дополнительная информация о authentication configuration on the nginx wiki.

+0

Привет, Большое спасибо за ответ, я посмотрел файл nginx.conf в моем личном реестре. как это помогает здесь для аутентификации? Я попытался создать учетную запись пользователя «docker login », он позволяет мне создавать учетную запись, но я не могу сделать так, как она используется, потому что push и pull отлично работают без каких-либо имени пользователя и пароля. Было бы здорово, если бы вы могли помочь. – priyank

0

Вы можете использовать htpasswd для настройки входа в систему с помощью образа реестров докеров. Тем не менее, я не верю, что они реализовали функцию поиска на этом изображении. Чтобы создать пользователь, у меня есть следующий сценарий:

#!/bin/sh 

usage() { echo "$0 user"; exit 1; } 

if [ $# -ne 1 ]; then 
    usage 
fi 

user=$1 

cd `dirname $0` 

if [ ! -d "auth" ]; then 
    mkdir -p auth 
fi 

chmod 666 auth/htpasswd 
docker run --rm -it \ 
    -v `pwd`/auth:/auth \ 
    --entrypoint htpasswd registry:2 -B /auth/htpasswd $user 
chmod 444 auth/htpasswd 

Затем для запуска реестра, я использую следующий скрипт (из той же папки):

#!/bin/sh 

cd `dirname $0` 

docker run -d -p 5000:5000 --restart=always --name registry \ 
    -v `pwd`/certs:/certs:ro \ 
    -v `pwd`/auth/htpasswd:/auth/htpasswd:ro \ 
    -v `pwd`/registry:/var/lib/registry \ 
    -e "REGISTRY_HTTP_TLS_CERTIFICATE=/certs/host-cert.pem" \ 
    -e "REGISTRY_HTTP_TLS_KEY=/certs/host-key.pem" \ 
    -e "REGISTRY_AUTH=htpasswd" \ 
    -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \ 
    -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \ 
    -e "REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/var/lib/registry" \ 
    registry:2 

Обратите внимание, что я также с помощью TLS в вышеуказанном каталоге certs. Вы можете создать их с помощью команд openssl (тех же, что используются для обеспечения подключения демона докеров).