docker - 有没有一种简单的方法来使用 LDAP 配置 Docker Private Registry 2.0?

标签 docker ldap docker-registry rhel7

我正在尝试遵循该指示:

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

在我的 RHEL7(3.10 内核)机器上。但它会是连接 LDAP 的更快、更简单的方法吗?我已经使用 TLS 自签名证书启动并运行私有(private)注册表 2.0。我能够从外部服务器推送和拉取图像,但仍在寻找快速选项以放入我的命令中以使注册表与 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只是一个docker容器时如何添加它?

编辑:

我也尝试过这种方法:
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 并从那里开始,但我遇到了同样的问题(即使我对 docker-compose.yml 文件有 777 权限)。

我的 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

我在 docker 上运行:
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

这似乎更好更容易,但不知何故它无法读取我的配置文件......谢谢你的所有回答。

最佳答案

最后,我使用了该解决方案:

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

LDAP 连接存在一些 TLS 问题(我使用了 ldaps://),并且 openSSL 应该在我这边升级(我有 1.0.1 版本),但最后它似乎是一个运行良好的最简单选项,因为

https://github.com/cesanta/docker_auth

暂时不适合我。

关于docker - 有没有一种简单的方法来使用 LDAP 配置 Docker Private Registry 2.0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37544390/

相关文章:

Docker-compose 设置脚本以从容器内设置环境变量

docker - 如何提高 Kubernetes 的安全性,尤其是 Pod 间的安全性?

jenkins - LDAP 身份验证不适用于 Jenkins

active-directory - sonarqube - 事件目录 ldap 错误代码 49

linux - 如何在 docker-machine 中保存对 boot2docker 的更改?

linux - Docker 中的纯数据容器如何获取数据?

c# - Active Directory 中的搜索过滤器无效

docker - 使用 Docker API 推送到私有(private)注册表

Docker镜像拉取错误无效字符

nginx - Docker 登录仅适用于守护进程,但不适用于 Docker 事件服务