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

优点

  1. 文档极其丰富,Github完整文档,全网大量案例,踩坑方案多;Jenkins/Gitea/Harbor对接LDAP的教程绝大多数基于osixia
  2. 支持多主集群复制、自动生成TLS证书、ldif批量导入、内置备份工具
  3. 生态成熟,v1.5.0稳定,大量生产环境在用

缺点

  1. 镜像偏大;底层Debian
  2. 权限坑是高频问题:宿主机挂载目录后,宿主机目录属主和容器内ldap用户uid不匹配,容器启动报permission denied(你前面containerd元数据/挂载权限问题要留意这个)
  3. 1.5.0版本内置OpenLDAP是2.4版本,相对老一点

⚠️ osixia v2是重大破坏性更新,配置和v1完全不兼容,不要混用。

✅ cleanstart/openldap

优点

  1. Alpine基础,镜像体积小;OpenLDAP版本更新(2.5+)
  2. 重点优化挂载权限,国内运维最喜欢,宿主机目录挂载后很少出现权限报错;国内很多k8s/docker-compose部署案例
  3. 默认启用常用overlay(memberOf,密码策略,账号锁定),Jenkins对接用户组、成员反向属性很方便

缺点

  1. 国外使用少,英文文档少;出问题只能看国内博客
  2. 挂载路径和osix不一样! 直接复制osixia的volumes会直接启动失败,这是最容易踩的坑
  3. 没有官方配套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. 选型建议总结

  1. 测试、Jenkins对接、新手、需要丰富排错文档 → osixia/openldap:1.5.0(优先推荐你当前场景)
  2. 生产环境、k8s、不想折腾挂载权限、想用新版OpenLDAP → cleanstart/openldap
  3. 不要两个镜像混用数据卷,数据目录结构不一样,直接迁移会损坏ldap数据库

两个镜像出来的LDAP协议完全一致,Jenkins LDAP插件配置参数几乎一样,只是用户DN、Base DN不变。

作者:月影鹏鹏  创建时间:2026-10-04 18:14
最后编辑:月影鹏鹏  更新时间:2026-10-04 18:15