cleanstart/openldap vs osixia/openldap 对比
核心一句话:osixia 是国际老牌、生态完善、文档多;cleanstart/openldap 国内社区改良版,适配国内环境、权限坑更少,国内教程大多是它。
你的场景:Jenkins LDAP 对接,两个镜像都可以,差异主要在底层基础镜像、环境变量、挂载目录、内置overlay
1. 基础信息对比
| 项目 | osixia/openldap | cleanstart/openldap |
|---|---|---|
| 基础系统 | 自制轻量基础镜像 osixia/light-baseimage(Debian) | Alpine 轻量小镜像,体积更小 |
| OpenLDAP版本 | 1.5.0 默认 OpenLDAP 2.4.57;v2分支升级2.6 | 2.5/2.6新版 OpenLDAP,原生支持现代overlay |
| Docker Hub下载量 | 极高,1亿+拉取,全球广泛使用 | 国内流行,国外使用少,国内博客大量采用 |
| 内置能力 | 自带多主复制、自动TLS证书、bootstrap ldif导入、备份脚本;自带memberOf、ppolicy密码策略overlay |
默认预装常用overlay(memberOf、ppolicy、refint),开箱即用;修复很多宿主机uid/gid权限问题 |
| 环境变量 | LDAP_DOMAIN、LDAP_ORGANISATION、LDAP_ADMIN_PASSWORD | 变量名风格接近,但部分参数名称不一样,不能直接复制osixia的compose.yml直接跑 |
| 数据挂载路径 | 数据:/var/lib/ldap;配置:/etc/ldap/slapd.d |
数据:/var/lib/openldap/openldap-data;配置:/var/lib/openldap/slapd.d ⚠️ 挂载目录不一样!直接套用osixia的volumes会启动失败 |
| 启动逻辑 | 自定义entrypoint,一套完整的初始化脚本;首次启动自动生成根域;重复启动会判断是否已初始化,幂等;但老版本容易出现宿主机目录权限报错 | 优化entrypoint,专门处理linux文件权限,解决国内服务器挂载volume后uid权限问题;很多用户反馈挂载目录不会出现权限拒绝 |
| 配套web管理 | 官方配套 osixia/phpldapadmin,天生配套 |
无官方phpldapadmin镜像,直接用osixia/phpldapadmin可以对接 |
2. 关键差异点
✅ osixia/openldap
优点
- 文档极其丰富,Github完整文档,全网大量案例,踩坑方案多;Jenkins/Gitea/Harbor对接LDAP的教程绝大多数基于osixia
- 支持多主集群复制、自动生成TLS证书、ldif批量导入、内置备份工具
- 生态成熟,v1.5.0稳定,大量生产环境在用
缺点
- 镜像偏大;底层Debian
- 权限坑是高频问题:宿主机挂载目录后,宿主机目录属主和容器内ldap用户uid不匹配,容器启动报permission denied(你前面containerd元数据/挂载权限问题要留意这个)
- 1.5.0版本内置OpenLDAP是2.4版本,相对老一点
⚠️ osixia v2是重大破坏性更新,配置和v1完全不兼容,不要混用。
✅ cleanstart/openldap
优点
- Alpine基础,镜像体积小;OpenLDAP版本更新(2.5+)
- 重点优化挂载权限,国内运维最喜欢,宿主机目录挂载后很少出现权限报错;国内很多k8s/docker-compose部署案例
- 默认启用常用overlay(memberOf,密码策略,账号锁定),Jenkins对接用户组、成员反向属性很方便
缺点
- 国外使用少,英文文档少;出问题只能看国内博客
- 挂载路径和osix不一样! 直接复制osixia的volumes会直接启动失败,这是最容易踩的坑
- 没有官方配套phpldapadmin镜像,只能独立部署phpldapadmin,但是协议层面互通
3. Jenkins LDAP 场景怎么选?
你的目标:OpenLDAP对接Jenkins做账号登录
- 如果你想快速上手,遇到问题能搜到大量排错资料 → osixia/openldap:1.5.0(我前面给你的compose就是这个,直接可用)
- 如果你担心宿主机挂载目录权限问题,想用新版OpenLDAP,国内服务器环境 → cleanstart/openldap,但是volumes目录必须修改
cleanstart/openldap 最简 docker-compose.yml(适配Jenkins)
version: '3.8'
services:
openldap:
image: cleanstart/openldap:latest
container_name: openldap
restart: always
environment:
LDAP_DOMAIN: example.org
LDAP_ORGANISATION: ExampleInc
LDAP_ADMIN_PASSWORD: Admin@123456
ports:
- "389:389"
- "636:636"
volumes:
# 注意!挂载路径和osixia不一样!!
- ./openldap-data:/var/lib/openldap/openldap-data
- ./openldap-config:/var/lib/openldap/slapd.d
networks:
- ldap-net
phpldapadmin:
image: osixia/phpldapadmin:0.9.0
container_name: phpldapadmin
restart: always
environment:
PHPLDAPADMIN_LDAP_HOSTS: openldap
PHPLDAPADMIN_HTTPS: "false"
ports:
- "8080:80"
depends_on:
- openldap
networks:
- ldap-net
networks:
ldap-net:4. 选型建议总结
- 测试、Jenkins对接、新手、需要丰富排错文档 → osixia/openldap:1.5.0(优先推荐你当前场景)
- 生产环境、k8s、不想折腾挂载权限、想用新版OpenLDAP → cleanstart/openldap
- 不要两个镜像混用数据卷,数据目录结构不一样,直接迁移会损坏ldap数据库
两个镜像出来的LDAP协议完全一致,Jenkins LDAP插件配置参数几乎一样,只是用户DN、Base DN不变。
作者:月影鹏鹏 创建时间:2026-10-04 18:14
最后编辑:月影鹏鹏 更新时间:2026-10-04 18:15
最后编辑:月影鹏鹏 更新时间:2026-10-04 18:15