Есть ли простой способ настроить Docker Private Registry 2.0 с помощью LDAP?

44
2

Я пытаюсь следовать этой инструкции:

https://www.digitalocean.com/community/tutorials/how-to-set-up-a-private-docker-registry-on-ubuntu-14-04

на моем ядре RHEL7 (3.10 ядро). Но может ли это быть более быстрым и простым способом подключения к LDAP? У меня есть собственный реестр 2.0 и работает с самозаверяющим сертификатом TLS. Я могу нажимать и извлекать изображения с внешних серверов, но все еще смотрю быстрые параметры, чтобы включить в мою команду, чтобы сделать реестр запущенным с LDAP.

Прямо сейчас я запускаю свой Docker с этой командой:

docker run -d -p 5000:5000 --restart=always --name Docker_registry -v /data/docker_registry:/var/lib/registry -v /etc/docker/certs.d:/etc/docker/certs.d -e REGISTRY_HTTP_TLS_CERTIFICATE=/etc/docker/certs.d/d-l-tools.ocnet.local.crt  -e REGISTRY_HTTP_TLS_KEY=/etc/docker/certs.d/d-l-tools.ocnet.local.key registry:2

Можете ли вы мне помочь? Если я говорю nginx использовать LDAP, я получаю эту ошибку:

nginx_1     | 2016/05/31 10:37:31 [emerg] 1#1: unknown directive "ldap_server" in /etc/nginx/conf.d/registry.conf:31
nginx_1 | nginx: [emerg] unknown directive "ldap_server" in /etc/nginx/conf.d/registry.conf:31
docker_nginx_1 exited with code 1

Кажется, нужен модуль для использования ldap, но как его добавить, когда nginx является только контейнером докеров?

Редакция:

Я также пробовал этот метод: https://github.com/cesanta/docker_auth

Но когда я использую эту команду:

docker run --rm -it --name docker_auth -p 5001:5001 -v /data/docker_registry/docker/docker_auth-master:/config:ro -v /var/log/docker_auth:/logs cesanta/docker_auth:stable /data/docker_registry/docker/docker_auth-master/docker-compose.yml

Я получил эту ошибку:

F0601 10:42:30.862161 1 main.go:167] Failed to load config: could not read /data/docker_registry/docker/docker_auth-master/docker-compose.yml: open /data/docker_registry/docker/docker_auth-master/docker-compose.yml: no such file or directory

После этой ошибки я переместил всю свою конфигурацию в /tmp и начал оттуда, но у меня такая же проблема (даже если у меня есть 777 разрешений для файла docker-compose.yml).

Мой docker-compose.yml выглядит так:

server:
addr: :5001
certificate: /data/docker_registry/docker/certs/docker-registry.crt
key: /data/docker_registry/docker/certs/docker-registry.key
token:
issuer: Acme auth server
expiration: 900
ldap_auth:
# Addr is the hostname:port or ip:port
addr: "ldaps://ldap.xxxxxx.com:636/OU=ROOT,DC=xxxxx,DC=local?sAMAccountName?sub?(&(memberOf:1.2.840.113556.1.4.1941:=cn=xx_DOCKER_USERS,OU=xxxx,OU=Groups,OU=GLOB000,OU=Global,OU=ROOT,DC=xxxxx,DC=local)(objectClass=person))" SSL
# Setup tls connection method to be
# "" or "none": the communication won't be encrypted
# "always": setup LDAP over SSL/TLS
# "starttls": sets StartTLS as the encryption method
tls: always
# set to true to allow insecure tls
insecure_tls_skip_verify: false
# In case bind DN and password is required for querying user information,
# specify them here. Plain text password is read from the file.
bind_dn: "CN=xx_Docker_xx,OU=xxxxx_xxxxx,OU=xxxxxx,OU=xxxxxx,OU=xxxxx,OU=Root,DC=xxxxx,DC=local"
bind_password_file: xxxxxxxx
# User query settings. ${account} is expanded from auth request
#base: o=example.com
#filter: (&(uid=${account})(objectClass=person))
acl:
# This will allow authenticated users to pull/push
- match:
account: /.+/
actions: ['*']

registry:
restart: always
image: registry:2
# hostname: "Registry_docker"
environment:
- REGISTRY_DELETE_ENABLED=true
volumes:
- /data/docker_registry:/var/lib/registry
ports:
- 5000:5000

Я работаю на докере:

cesanta]# docker version
Client:
Version: 1.11.1
API version: 1.23
Go version: go1.5.4
Git commit: 5604cbe
Built: Wed Apr 27 00:34:42 2016
OS/Arch: linux/amd64

Server:
Version: 1.11.1
API version: 1.23
Go version: go1.5.4
Git commit: 5604cbe
Built: Wed Apr 27 00:34:42 2016
OS/Arch: linux/amd64

Кажется, это лучше и проще, но как-то он не смог прочитать мой конфигурационный файл... Спасибо за все ваши ответы.

спросил(а) 2016-05-31T14:25:00+03:00 3 года, 6 месяцев назад
1
Решение
46

Наконец, я использовал это решение:

https://github.com/tierratelematics/existing-ldap-docker-registry

Были некоторые проблемы с TLS с подключением LDAP (я использовал ldaps://), и openSSL должен быть обновлен на моей стороне (у меня была версия 1.0.1), но в конце это, кажется, самый простой вариант, который работает хорошо, поскольку

https://github.com/cesanta/docker_auth

для меня пока не работает.

ответил(а) 2016-06-06T12:46:00+03:00 3 года, 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема