создание пользователя в приватном реестре docker

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

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

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

Как это решить?

Спасибо, Яш


person priyank    schedule 12.09.2014    source источник


Ответы (2)


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

person bskaggs    schedule 12.09.2014
comment
Привет! Большое спасибо за ответ, я просмотрел файл nginx.conf в своем личном реестре. как это помогает здесь для аутентификации? Я попытался создать учетную запись пользователя с помощью входа в докер ‹URL-адрес реестра›, это позволяет мне создать учетную запись, но я не могу понять, как ее использовать, потому что push и pull работают нормально без необходимости имени пользователя и пароля. Было бы здорово, если бы вы могли помочь. - person priyank; 18.09.2014

Вы можете использовать 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 (тех же, которые используются для защиты сокета демона Docker).

person BMitch    schedule 24.01.2017