环境信息
- 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 容器创建本地持久化数据目录,容器启动时将此目录以数据卷的形式挂载使用
启动容器,挂载数据卷,使用自定义网络
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 #
# 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统一用户认证的方法