Docker 部署 OpenLDAP + phpLDAPadmin 教程

环境信息

  • Centos7 3.10.0-1160.76.1
  • Docker Engine - Community 19.03.15

安装步骤

创建自定义网络

为了使容器互联,新版本建议将容器加入自定义的 Docker 网络 来连接多个容器,而不是使用 --link 参数。

从 Docker 1.10 版本开始,docker daemon 实现了一个内嵌的 DNS server,使容器可以直接通过容器名称通信。方法很简单,只要在创建容器时使用 --name 为容器命名即可。但是使用 Docker DNS 有个限制:只能在 user-defined 网络中使用。也就是说,默认的 bridge 网络是无法使用 DNS 的,所以我们就需要自定义网络。

docker network create -d bridge docker-network-for-openldap

之后为 LDAP 创建的相关容器,都连接到此网络。

启动 openldap 容器

为 openldap 容器创建本地持久化数据目录,容器启动时将此目录以数据卷的形式挂载使用

mkdir /data/OpenLDAPData

启动容器,挂载数据卷,使用自定义网络

docker run -d -p 389:389 -p 636:636 \
-v /data/OpenLDAPData:/usr/local/ldap \
--name openldap \
--network docker-network-for-openldap \
osixia/openldap:1.3.0

ldap 默认配置:

dn     dc=example,dc=org
admin cn=admin,dc=example,dc=org
password admin

进入容器验证

$ docker exec -it openldap bash
root@2f49810360ce:/# ldapsearch -x -H ldap://localhost:389 -b dc=example,dc=org -D "cn=admin,dc=example,dc=org" -w admin
# extended LDIF
#
# LDAPv3
# base <dc=example,dc=org> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# example.org
dn: dc=example,dc=org
objectClass: top
objectClass: dcObject
objectClass: organization
o: Example Inc.
dc: example

# admin, example.org
dn: cn=admin,dc=example,dc=org
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:: e1NTSEF9NENMcFBvNEQrUlhhcFUxdDRVT1FSUm5SdU0zQnNEdnk=

# search result
search: 2
result: 0 Success

# numResponses: 3
# numEntries: 2

启动 phpLDAPadmin

docker run -dit -p 8081:80 --name phpLDAPadmin --network docker-network-for-openldap \
--env PHPLDAPADMIN_HTTPS=false \
--env PHPLDAPADMIN_LDAP_HOSTS=openldap \
--restart always \
osixia/phpldapadmin

浏览器访问相应链接,可登录到 WEB 页面。

参考链接

Docker搭建OpenLDAP+phpLDAPadmin统一用户认证的方法