コンテナイメージの選択
Docker Hubでopenldap
をキーワードに検索
最も人気のある以下のイメージを使用してみる。
環境
- ベアメタル
- Ubuntu 16.04.3
- Docker CE 19.03.12
- Docker-compose 1.26.2
構築
Quick Startを参考に、docker-composeを使ってインストールする。
作成したdocker-compose.yml
version: "3.8"
services:
openldap:
image: osixia/openldap:1.5.0
restart: always
container_name: openldap
environment:
LDAP_ORGANISATION: "My Company"
LDAP_DOMAIN: "my-company.com"
LDAP_ADMIN_PASSWORD: "JonSn0w"
ports:
- "389:389"
- "636:636"
volumes:
- "/srv/openldap/slapd/database:/var/lib/ldap"
- "/srv/openldap/slapd/config:/etc/ldap/slapd.d"
- "/srv/openldap/slapd/ldifs:/container/service/slapd/assets/custome" # ldifファイルの置き場として使用
docker-compose.ymlを使ってデプロイ
$ sudo mkdir -p /srv/openldap/slapd/database
$ sudo mkdir -p /srv/openldap/slapd/config
$ sudo mkdir -p /srv/openldap/slapd/ldifs
$ docker-compose up -d
Creating network "openldap_default" with the default driver
Pulling openldap (osixia/openldap:1.5.0)...
1.5.0: Pulling from osixia/openldap
45b42c59be33: Pull complete
ae7fb8f59730: Pull complete
55443d9da5d5: Pull complete
062b29194b6e: Pull complete
613ba832a7d4: Pull complete
48562e0b854d: Pull complete
3731e12f1fa4: Pull complete
b1feb4016881: Pull complete
d2744e887776: Pull complete
Digest: sha256:18742e9c449c9c1afe129d3f2f3ee15fb34cc43e5f940a20f3399728f41d7c28
Status: Downloaded newer image for osixia/openldap:1.5.0
Creating openldap ... done
$ docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------------------
openldap /container/tool/run Up 0.0.0.0:389->389/tcp, 0.0.0.0:636->636/tcp
ldapsearchしてみる。
$ docker exec openldap ldapsearch -x -b dc=my-company,dc=com -D "cn=admin,dc=my-company,dc=com" -w JonSn0w
# extended LDIF
#
# LDAPv3
# base <dc=my-company,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# my-company.com
dn: dc=my-company,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: My Company
dc: my-company
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
サーチ結果が返ったので、LDAPが動いているようである。
LDAPアカウントの追加
ldifファイルの作成
$ docker exec openldap cp container/service/slapd/assets/test/new-user.ldif container/service/slapd/assets/custome/testuser.ldif
$ sudo -i
# cd /srv/openldap/slapd/ldifs/
# ls
testuser.ldif
# vim testuser.ldif
# cat testuser.ldif
dn: uid=testuser,dc=my-company,dc=com
uid: testuser
cn: User
sn: Test
objectClass: top
objectClass: posixAccount
objectClass: inetOrgPerson
loginShell: /bin/bash
homeDirectory: /home/testuser
uidNumber: 2000
gidNumber: 2000
mail: testuser@my-company.com
gecos: "Test user"
アカウントの作成
$ docker exec openldap ldapadd -x -D "cn=admin,dc=my-company,dc=com" -w JonSn0w -f /container/service/slapd/assets/custome/testuser.ldif -ZZ
adding new entry "uid=testuser,dc=my-company,dc=com"
パスワード設定
$ docker exec openldap ldappasswd -s password -w JonSn0w -D "cn=admin,dc=my-company,dc=com" -x "uid=testuser,dc=my-company,dc=com"
ldapsearchを使って、作成したユーザーを確認
docker exec openldap ldapsearch -x -b "uid=testuser,dc=my-company,dc=com" -D "cn=admin,dc=my-company,dc=com" -w JonSn0w
# extended LDIF
#
# LDAPv3
# base <uid=testuser,dc=my-company,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# testuser, my-company.com
dn: uid=testuser,dc=my-company,dc=com
uid: testuser
cn: User
sn: Test
objectClass: top
objectClass: posixAccount
objectClass: inetOrgPerson
loginShell: /bin/bash
homeDirectory: /home/testuser
uidNumber: 2000
gidNumber: 2000
mail: testuser@my-company.com
gecos: "Test user"
userPassword:: e1NTSEF9a1QxQnU4b0E4TEpjNUF5a0NKUXROcnpMcWs2QlJLbVo=
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
作成したユーザーの情報が返ってきた!