本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

该Docker镜像由Gluu Federation提供,是OpenDJ的Docker打包版本,用于便捷部署和运行OpenDJ LDAP服务器。OpenDJ是一款功能强大的目录服务器,广泛应用于身份管理、用户数据存储和目录服务场景。本镜像支持多种配置和密钥管理适配器、自动LDAP复制等特性,简化了OpenDJ在容器化环境中的部署与运维。
gluufederation/opendj:5.0.0_dev。容器支持以下环境变量,用于配置服务行为:
CN_CONFIG_ADAPTER:配置后端适配器,可选值为consul(默认)、kubernetes或google。CN_CONFIG_CONSUL_HOST:Consul的主机名或IP(默认值:localhost)。CN_CONFIG_CONSUL_PORT:Consul的端口(默认值:8500)。CN_CONFIG_CONSUL_CONSISTENCY:Consul一致性模式,可选default、consistent或stale(默认值:stale)。CN_CONFIG_CONSUL_SCHEME:Consul支持的协议(http或https)。CN_CONFIG_CONSUL_VERIFY:是否验证证书(默认值:false)。CN_CONFIG_CONSUL_CACERT_FILE:Consul CA证书文件路径(默认值:/etc/certs/consul_ca.crt)。当CN_CONFIG_CONSUL_VERIFY设为true且文件存在时使用。CN_CONFIG_CONSUL_CERT_FILE:Consul证书文件路径(默认值:/etc/certs/consul_client.crt)。CN_CONFIG_CONSUL_KEY_FILE:Consul密钥文件路径(默认值:/etc/certs/consul_client.key)。CN_CONFIG_CONSUL_TOKEN_FILE:包含ACL令牌的文件路径(默认值:/etc/certs/consul_token)。CN_CONFIG_KUBERNETES_NAMESPACE:Kubernetes命名空间(默认值:default)。CN_CONFIG_KUBERNETES_CONFIGMAP:Kubernetes配置映射名称(默认值:jans)。CN_CONFIG_KUBERNETES_USE_KUBE_CONFIG:是否从$HOME/.kube/config加载凭据(仅非容器环境有用,默认值:false)。GOOGLE_PROJECT_ID:Google项目ID(默认值:空字符串)。当CN_CONFIG_ADAPTER或CN_SECRET_ADAPTER设为google时使用。GOOGLE_APPLICATION_CREDENTIALS:包含Google凭据的JSON文件路径(可选)。参考Google云认证文档获取支持的凭据类型。CN_SECRET_ADAPTER:密钥适配器,可选值为vault(默认)、kubernetes或google。CN_SECRET_VAULT_VERIFY:是否验证Vault证书(默认值:false)。CN_SECRET_VAULT_ROLE_ID_FILE:包含Vault AppRole角色ID的文件路径(默认值:/etc/certs/vault_role_id)。CN_SECRET_VAULT_SECRET_ID_FILE:包含Vault AppRole密钥ID的文件路径(默认值:/etc/certs/vault_secret_id)。CN_SECRET_VAULT_CERT_FILE:Vault证书文件路径(默认值:/etc/certs/vault_client.crt)。CN_SECRET_VAULT_KEY_FILE:Vault密钥文件路径(默认值:/etc/certs/vault_client.key)。CN_SECRET_VAULT_CACERT_FILE:Vault CA证书文件路径(默认值:/etc/certs/vault_ca.crt)。当CN_SECRET_VAULT_VERIFY设为true且文件存在时使用。CN_SECRET_VAULT_ADDR:Vault的URL(默认值:http://localhost:8200)。CN_SECRET_VAULT_NAMESPACE:访问密钥时使用的命名空间(默认值:空字符串)。CN_SECRET_VAULT_KV_PATH:KV密钥引擎的路径(默认值:secret)。CN_SECRET_VAULT_PREFIX:构建密钥路径的基础前缀(默认值:jans)。CN_SECRET_VAULT_APPROLE_PATH:AppRole的路径(默认值:approle)。CN_SECRET_KUBERNETES_NAMESPACE:Kubernetes命名空间(默认值:default)。CN_SECRET_KUBERNETES_CONFIGMAP:Kubernetes密钥名称(默认值:jans)。CN_SECRET_KUBERNETES_USE_KUBE_CONFIG:是否从$HOME/.kube/config加载凭据(仅非容器环境有用,默认值:false)。CN_GOOGLE_SECRET_VERSION_ID:Google Secret Manager中Janssen密钥的版本ID(默认值:latest,推荐使用)。CN_GOOGLE_SECRET_MANAGER_PASSPHRASE:Google Secret Manager中Janssen密钥的密码(推荐修改,默认值:secret)。CN_GOOGLE_SECRET_NAME_PREFIX:Google Secret Manager中Janssen密钥的前缀(默认值:jans,若保留则创建jans-secret密钥)。CN_WAIT_MAX_TIME:启动时“健康检查”的最长运行时间(默认值:300秒)。CN_WAIT_SLEEP_DURATION:启动“健康检查”之间的延迟时间(默认值:10秒)。CN_CERT_ALT_NAME:证书中作为Subject Alt Name的额外DNS名称。若值非空且与现有证书中的Subject Alt Name不匹配(或不存在),则会重新生成新证书并覆盖配置后端中保存的证书。仅当部署oxShibboleth时需要,用于解决连接OpenDJ时CN与目标主机名不匹配的问题。注意:任何连接到OpenDJ的现有容器都必须重新部署以下载新证书。CN_MAX_RAM_PERCENTAGE:传递给Java选项-XX:MaxRAMPercentage的值。CN_JAVA_OPTIONS:传递给入口点的Java选项,如-Xmx1024m(默认值:空字符串)。CN_LDAP_AUTO_REPLICATE:是否自动启用复制(默认值:true)。CN_LDAP_REPL_CHECK_INTERVAL:复制检查的间隔时间(秒,默认值:10)。CN_LDAP_REPL_MAX_RETRIES:自动复制初始化的最大重试次数(默认值:10)。达到最大重试次数后,无论复制状态如何,进程都会停止(可能需要手动运行进程)。CN_LDAP_REPL_SOURCE:作为复制源的地址(例如:ldap,默认值:空字符串)。CN_LDAP_REPL_DISABLE_ON_EXIT:退出时是否自动禁用复制(默认值:true)。CN_LDAP_USE_SSL:是否使用SSL连接到LDAP服务器(默认值:true)。生成包含cn=Directory Manager密码的ldap_password密钥,例如:Test1234#。
生成包含信任库密码的ldap_truststore_password密钥,例如:
tr -dc 'a-zA-Z0-9' < /dev/urandom | fold -w 12 | head -n 1
创建opendj.crt和opendj.key文件,例如:
openssl req \ -x509 \ -newkey rsa:2048 \ -sha256 \ -days 365 \ -nodes \ -keyout opendj.key \ -out opendj.crt \ -subj '/CN=demoexample.jans.io' \ -addext 'subjectAltName=DNS:ldap,DNS:opendj'
注意:需添加额外的DNS:<opendj-service-name>以匹配OpenDJ的Kubernetes服务名称。
使用以下命令准备ldap_ssl_cert密钥:
cat opendj.crt | base64 -w0
使用以下命令准备ldap_ssl_key密钥:
cat opendj.key | base64 -w0
将上述密钥放入configuration.json(部分键省略):
{ "_secret": { "ldap_password": "<ldap_password>", "ldap_truststore_pass": "<ldap_truststore_password>", "ldap_ssl_cert": "<ldap_ssl_cert>", "ldap_ssl_key": "<ldap_ssl_key>" }, "_configmap": { "optional_scopes": "[\"couchbase\", \"ldap\", \"redis\", \"sql\"]", "admin_email": "***", "hostname": "demoexample.jans.io", "city": "Austin", "country_code": "US", "orgName": "Gluu", "state": "TX" } }
若使用charts的values.yaml,按以下示例放置相关密钥:
config: ldapPassword: "<ldap_password>" ldapTruststorePassword: "<ldap_truststore_password>" configmap: cnLdapCrt: "<ldap_ssl_cert>" cnLdapKey: "<ldap_ssl_key>"
在主机创建opendj_configuration_export.py:
import os from jans.pycloudlib import get_manager manager = get_manager() # 拉取密钥供后续使用 manager.secret.to_file("ldap_ssl_cert", "/tmp/opendj.crt", decode=True) manager.secret.to_file("ldap_ssl_key", "/tmp/opendj.key", decode=True) manager.secret.to_file("ldap_truststore_pass", "/tmp/ldap_truststore_password") manager.secret.to_file("encoded_ox_ldap_pw", "/tmp/ldap_password", decode=True) # 转换并推送密钥 manager.secret.from_file("ldap_ssl_cert", "/tmp/opendj.crt") manager.secret.from_file("ldap_ssl_key", "/tmp/opendj.key") manager.secret.from_file("ldap_password", "/tmp/ldap_password")
将脚本复制到现有Pod并运行,例如:
kubectl -n jans cp opendj_configuration_export.py jans-auth-xzddfi:/tmp/opendj_configuration_export.py # 此脚本将创建所需文件 kubectl -n jans exec jans-auth-xzddfi -- python3 /tmp/opendj_configuration_export.py
下载脚本生成的文件,例如:
kubectl -n jans cp jans-auth-xzddfi:/tmp/ldap_password ldap_password kubectl -n jans cp jans-auth-xzddfi:/tmp/ldap_truststore_password ldap_truststore_password kubectl -n jans cp jans-auth-xzddfi:/tmp/opendj.crt opendj.crt kubectl -n jans cp jans-auth-xzddfi:/tmp/opendj.key opendj.key
使用以下命令准备ldap_ssl_cert密钥:
cat opendj.crt | base64 -w0
使用以下命令准备ldap_ssl_key密钥:
cat opendj.key | base64 -w0
将上述密钥放入configuration.json(部分键省略):
{ "_secret": { "ldap_password": "<ldap_password>", "ldap_truststore_pass": "<ldap_truststore_password>", "ldap_ssl_cert": "<ldap_ssl_cert>", "ldap_ssl_key": "<ldap_ssl_key>" }, "_configmap": { "optional_scopes": "[\"couchbase\", \"ldap\", \"redis\", \"sql\"]", "admin_email": "***", "hostname": "demoexample.jans.io", "city": "Austin", "country_code": "US", "orgName": "Gluu", "state": "TX" } }
若使用charts的values.yaml,按以下示例放置相关密钥:
config: ldapPassword: "<ldap_password>" ldapTruststorePassword: "<ldap_truststore_password>" configmap: cnLdapCrt: "<ldap_ssl_cert>" cnLdapKey: "<ldap_ssl_key>"
python3 /app/scripts/deregister_peer.py(在Kubernetes中,可使用preStop钩子替代)当容器运行时,满足以下条件会自动触发复制过程:
o=jans、o=site、o=metric后端尚未复制且无条目查看LDAP容器日志可了解结果,也可在容器内运行/opt/opendj/bin/dsreplication status检查复制状态。
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429