OpenLDAP
针对 OpenLDAP 应用的 Docker 镜像,用于提供 OpenLDAP 服务。容器详细使用说明可参考仓库:Gitee 或 Github中服务器运维相应文档。
使用说明可参照:官方说明
版本信息:
- 2.5
镜像信息:
- 镜像地址:
- 阿里云: registry.cn-shenzhen.aliyuncs.com/colovu/openldap:2.5
- Docker Hub: colovu/openldap:2.5
- Colovu Registry: docker.colovu.com/colovu/openldap:2.5
- 依赖镜像:colovu/debian:12
后续相关命令行默认使用
[Colovu Registry](https://docker.colovu.com)镜像服务器做说明
TL;DR
Docker 快速启动命令:
# 从 Registry 服务器下载镜像并启动
$ docker run -it docker.colovu.com/colovu/openldap:2.5 /bin/bash
Docker-Compose 快速启动命令:
# 从 Gitee 下载 Compose 文件
$ curl -sSL -o https://gitee.com/colovu/docker-openldap/raw/master/docker-compose.yml
# 从 Github 下载 Compose 文件
$ curl -sSL -o https://raw.githubusercontent.com/colovu/docker-openldap/master/docker-compose.yml
# 创建并启动容器
$ docker-compose up -d
默认对外声明
端口
- 8389:普通 LDAP 通讯端口
- 8639:TLS 加密 LDAP 通讯端口
数据卷
镜像默认提供以下数据卷定义,默认数据分别存储在自动生成的应用名对应openldap子目录中:
/var/datalog # 数据操作日志文件
/srv/conf # 配置文件
/srv/data # 数据文件,主要存放应用数据
/srv/cert # 证书文件存放目录
/var/log # 日志输出
/var/run # 系统运行时文件,如 PID 文件
如果需要持久化存储相应数据,需要在宿主机建立本地目录,并在使用镜像初始化容器时进行映射。宿主机相关的目录中如果不存在对应应用openldap的子目录或相应数据文件,则容器会在初始化时创建相应目录及文件。
使用镜像
以下使用镜像的样例中,我们使用 MariaDB Galera 实例连接 OpanLDAP 并进行用户认证.
定义网络
定义一个私有的网络my-network,以方便后续应用容器的连接:
$ docker network create my-network --driver bridge
启动 OpenLDAP 容器
使用之前定义的my-network网络初始化 OpenLDAP 容器:
$ docker run --detach --rm --name openldap \
--network my-network \
--env LDAP_BIND_UID=bind \
--env LDAP_BIND_PASSWORD=bindpassword \
--env LDAP_USERS=customuser \
--env LDAP_PASSWORDS=custompassword \
docker.colovu.com/colovu/openldap:2.5
启动 MariaDB Galera 容器
使用之前定义的my-network网络初始化 MariaDB Galera 容器:
$ docker run --detach --rm --name mariadb-galera \
--network my-network \
--env MARIADB_ROOT_PASSWORD=root-password \
--env MARIADB_GALERA_MARIABACKUP_PASSWORD=backup-password \
--env MARIADB_USER=customuser \
--env MARIADB_DATABASE=customdatabase \
--env MARIADB_ENABLE_LDAP=yes \
--env LDAP_URI=ldap://openldap:8389 \
--env LDAP_BASE=dc=example,dc=org \
--env LDAP_BIND_DN=uid=bind,ou=Manager,dc=example,dc=org \
--env LDAP_BIND_PASSWORD=bindpassword \
bitnami/mariadb-galera:2.5
启动 MariaDB client 容器验证
创建一个新的 MariaDB client 容器,进行验证客户端是否可以进行认证:
$ docker run -it --rm --name mariadb-client \
--network my-network \
bitnami/mariadb-galera:2.5 mysql -h mariadb-galera -u customuser -D customdatabase -pcustompassword
容器配置
在初始化 OpenLDAP 容器时,如果没有预置配置文件,可以在命令行中设置相应环境变量对默认参数进行修改。类似命令如下(配置环境变量APP_ENV_KEY_NAME的值为key_value):
$ docker run -d -e "APP_ENV_KEY_NAME=key_value" colovu/openldap
常规配置参数
常规配置参数用来配置容器基本属性,一般情况下需要设置,主要包括:
LDAP_ROOT:默认值:dc=example,dc=org。设置数据库根 DNLDAP_ORGNIZATION_NAME:默认值:Colovu Lab。设置数据库所属组织名LDAP_ROOT_USERNAME:默认值:root。设置 RootDN 用户名LDAP_ROOT_PASSWORD:默认值:rootpassword。设置 RootDN 用户密码LDAP_BIND_UID:默认值:bind。设置 Binder 用户 UIDLDAP_BIND_PASSWORD:默认值:bindpassword。设置 Binder 用户密码LDAP_ADMIN_UID:默认值:admin。设置 Admin 用户 UIDLDAP_ADMIN_PASSWORD:默认值:adminpassword。设置 Admin 用户密码LDAP_ADMIN_MAIL:默认值:admin@example.com。设置 Admin 用户邮箱
常规可选参数
如果没有必要,可选配置参数可以不用定义,直接使用对应的默认值,主要包括:
ENV_DEBUG:默认值:false。设置是否输出容器调试信息。可选值:no、true、yesLDAP_BIND_GIVEN_NAME:默认值:false。设置 Binder 用户名字LDAP_BIND_SURNAME:默认值:false。设置 Binder 用户姓氏LDAP_ADMIN_GIVEN_NAME:默认值:false。设置 Admin 用户名字LDAP_ADMIN_SURNAME:默认值:false。设置 Admin 用户姓氏LDAP_PORT_NUMBER:默认值:8389。非加密方式通讯端口LDAP_LDAPS_PORT_NUMBER:默认值:8636。TLS 加密方式通讯端口LDAP_EXTRA_SCHEMAS:默认值:无。设置加载的 Schema 文件(core / cosine / inetorgperson / nis / samba 默认强制加载)LDAP_EXTRA_MODULES:默认值:无。设置加载的动态库文件(back_hdb / back_monitor / refint / memberof / accesslog 默认强制加载)LDAP_CUSTOM_LDIF_DIR:默认值:initdb.d/ldifs。设置用户自定义 LDIF 文件相对路径LDAP_CUSTOM_SCHEMA_DIR:默认值:false。设置用户自定义 Schema 文件相对路径LDAP_ULIMIT_NOFILES:默认值:1024。设置默认的系统最大打开文件句柄数,用于节省内存LDAP_SKIP_DEFAULT_TREE:默认值:no。设置是否初始化默认DN信息。可选值:no、yesLDAP_USERS:默认值:user01,user02。初始化时创建默认用户列表LDAP_PASSWORDS:默认值:password1,password2。初始化时创建默认用户对应的密码LDAP_USER_OU:默认值:users。初始化时创建默认用户所属 OULDAP_USER_GROUP:默认值:readers。初始化时创建默认用户所属组
集群配置参数
配置服务为集群工作模式时,通过以下参数进行配置:
TLS配置参数
配置服务使用 TLS 加密时,通过以下参数进行配置:
LDAP_ENABLE_TLS:默认值:no。设置是使用TLS加密。可选值:no、yesLDAP_TLS_CERT_FILE:默认值:无。设置 CERT 文件路径LDAP_TLS_KEY_FILE:默认值:无。设置 KEY 文件路径LDAP_TLS_CA_FILE:默认值:无。设置 CA 文件路径LDAP_TLS_DH_PARAMS_FILE:默认值:无。设置 DH 参数文件路径
安全
容器安全
本容器默认使用non-root运行应用,以加强容器的安全性。在使用non-root用户运行容器时,相关的资源访问会受限;应用仅能操作镜像创建时指定的路径及数据。使用non-root方式的容器,更适合在生产环境中使用。
如果需要赋予容器内应用访问外部设备的权限,可以使用以下两种方式:
- 启动参数增加
--privileged=true选项 - 针对特定权限需要使用
--cap-add单独增加特定赋权,如:ALL、NET_ADMIN、NET_RAW
如果需要切换为root方式运行应用,可以在启动命令中增加-u root以指定运行的用户。
注意事项
- 容器中应用的启动参数不能配置为后台运行,如果应用使用后台方式运行,则容器的启动命令会在运行后自动退出,从而导致容器退出
更新记录
- 2023/8/1 (2.5): 更新版本,基于 OpenLDAP 2.5.16(LTS),Debian 12。
其他
-
Berkeley DB 6:http://download.oracle.com/berkeley-db/db-6.2.32.tar.gz
-
Berkeley DB 5:http://download.oracle.com/berkeley-db/db-5.3.28.tar.gz
-
Berkeley DB 4:http://download.oracle.com/berkeley-db/db-4.8.30.tar.gz
-
LDAP (2.4.59):https://www.openldap.org/software/download/OpenLDAP/openldap-release/openldap-2.4.59.tgz
-
LDAP LTS (2.5.16):https://www.openldap.org/software/download/OpenLDAP/openldap-release/openldap-2.5.16.tgz
本文原始来源 Endial Fang @ Github.com