docker 容器化搭建 OpenLDAP

目標(biāo)

利用 docker 快速搭建一套企業(yè)用戶目錄夷都,包含 OpenLDAP、PhpLdapAdmin

知識(shí)儲(chǔ)備

  • docker
  • docker-compose
  • LDAP

快速開始

編寫 docker-compose.yaml

version: '2'
services:
  ldap-openldap:
    container_name: ldap-openldap
    image: dinkel/openldap    # 如果拉取速度很慢穴亏,可以換成 registry.cn-hangzhou.aliyuncs.com/bxwill/openldap
    restart: always
    ports:
      - "389:389"
    environment:
      - SLAPD_PASSWORD=opendevops    # 自定義 admin 的密碼
      - SLAPD_DOMAIN=qualitysphere.github.io    # 自定義 LDAP 的域名褪储,admin 賬號(hào)即 cn=admin,dc=qualitysphere,dc=github,dc=io
    volumes:
      - ./ldap/db:/var/lib/ldap
      - ./ldap/config:/etc/ldap
  ldap-phpldapadmin:
    container_name: ldap-phpldapadmin
    image: dinkel/phpldapadmin    # 如果拉取速度很慢寝蹈,可以換成 registry.cn-hangzhou.aliyuncs.com/bxwill/phpldapadmin
    restart: always
    ports:
      - "8080:80"
    environment:
      - LDAP_SERVER_HOST=ldap-openldap    # 使用 compose 啟動(dòng)容器,可以直接使用服務(wù)名

啟動(dòng)容器

docker-compose -f docker-compose.yaml up -d

該命令會(huì)自動(dòng)拉取鏡像侄非,然后運(yùn)行容器在后臺(tái)蕉汪。

Creating network "ldap_default" with the default driver
Pulling ldap-openldap (registry.cn-hangzhou.aliyuncs.com/bxwill/openldap:)...
latest: Pulling from bxwill/openldap
3e731ddb7fc9: Pull complete
13c25f64fb95: Pull complete
ea04acf4d1c7: Pull complete
698e147b1a14: Pull complete
785315087f01: Pull complete
Digest: sha256:eab96e00fb6c61bc62b31d4be3374bd7135d2d28f8258444bb54f2ec33bc171d
Status: Downloaded newer image for registry.cn-hangzhou.aliyuncs.com/bxwill/openldap:latest
Pulling ldap-phpldapadmin (registry.cn-hangzhou.aliyuncs.com/bxwill/phpldapadmin:)...
latest: Pulling from bxwill/phpldapadmin
2bb30e6532d8: Pull complete
4f4fb700ef54: Pull complete
356a56dc0f33: Pull complete
7297012dc270: Pull complete
e50d050ecbcb: Pull complete
1d90d6cb6813: Pull complete
4b4db6a38010: Pull complete
a19943242af0: Pull complete
70fe1e7e8823: Pull complete
65ea61459158: Pull complete
193cb54f7ff2: Pull complete
f66701481e0d: Pull complete
af6fb5a4e30d: Pull complete
b00e580e6cd0: Pull complete
b38050511c0b: Pull complete
Digest: sha256:eb3a89ebd1b9a6b1f7db7b416b0d5a97fed9b1d23c09dd8b31893bb7ec342a49
Status: Downloaded newer image for registry.cn-hangzhou.aliyuncs.com/bxwill/phpldapadmin:latest
Creating ldap-openldap     ... done
Creating ldap-phpldapadmin ... done

檢查服務(wù)

docker-compose -f docker-compose.yaml ps

狀態(tài)都為 Up 即說明容器運(yùn)行正常:

      Name                     Command               State           Ports        
----------------------------------------------------------------------------------
ldap-openldap       /entrypoint.sh slapd -d 32 ...   Up      0.0.0.0:389->389/tcp
ldap-phpldapadmin   /bootstrap.sh /run.sh            Up      0.0.0.0:8080->80/tcp 

登錄 LDAP

在瀏覽器中輸入主機(jī) IP 加 8080 端口流译,可以訪問到如下界面:

通過自定義的 admin 賬號(hào)和密碼登錄 OpenLDAP:

點(diǎn)擊左側(cè)欄的 Create new entry here 進(jìn)入模板列表:

選擇一個(gè)模板填入信息即可創(chuàng)建:

自定義用戶模板

在實(shí)際工作中,模板其實(shí)不需要這么多者疤,通常會(huì)定制一個(gè)適合自己場(chǎng)景的模板福澡。

比如定制一個(gè)更輕量的用戶賬號(hào)模板:

該模板采用 xml 編寫,上圖的模板 xml 如下:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE template SYSTEM "template.dtd">

<template>
    <askcontainer>1</askcontainer>
    <description>Open DevOps Account</description>
    <icon>ldap-user.png</icon>
    <invalid>0</invalid>
    <rdn>cn</rdn>
    <!--<regexp>^ou=People,o=.*,</regexp>-->
    <title>OpenDevOps: Account</title>
    <visible>1</visible>

    <objectClasses>
        <objectClass id="inetOrgPerson"></objectClass>
    </objectClasses>

    <attributes>
        <attribute id="cn">
            <display>Common Name</display>
            <icon>ldap-uid.png</icon>
            <order>1</order>
            <page>1</page>
            <spacer>1</spacer>
        </attribute>
        <attribute id="sn">
            <display>Last name</display>
            <order>2</order>
            <page>1</page>
            <spacer>1</spacer>
        </attribute>
        <attribute id="uid">
            <display>User Name</display>
            <order>3</order>
            <page>1</page>
            <spacer>1</spacer>
        </attribute>
        <attribute id="mail">
            <display>Email</display>
            <icon>mail.png</icon>
            <value>@qualitysphere.github.io</value>
            <order>4</order>
            <page>1</page>
            <spacer>1</spacer>
        </attribute>
        <attribute id="displayName">
            <display>Display Name</display>
            <order>5</order>
            <page>1</page>
            <spacer>1</spacer>
        </attribute>
        <attribute id="mobile">
            <display>Mobile</display>
            <icon>phone.png</icon>
            <order>6</order>
            <page>1</page>
            <spacer>1</spacer>
        </attribute>
        <attribute id="userPassword">
            <display>Password</display>
            <default>opendevops</default>
            <order>7</order>
            <page>1</page>
            <spacer>1</spacer>
        </attribute>
    </attributes>

</template>

將其放入 PhpLdapAdmin 模板目錄:

docker cp ldap/templates/myTemplate.xml ldap-phpldapadmin:/etc/phpldapadmin/templates/creation/

再次刷新模板列表頁面即可看到它被加載:

或者直接掛載模板目錄驹马,使得模板列表中只顯示自定義的模板革砸,頁面更簡(jiǎn)潔,修改 docker-compose.yaml 中的最后兩行窥翩,添加定義 ldap-phpldapadmin 的掛載目錄:

version: '2'
services:
  ldap-openldap:
    container_name: ldap-openldap
    image: dinkel/openldap    # 如果拉取速度很慢业岁,可以換成 registry.cn-hangzhou.aliyuncs.com/bxwill/openldap
    restart: always
    ports:
      - "389:389"
    environment:
      - SLAPD_PASSWORD=opendevops    # 自定義 admin 的密碼
      - SLAPD_DOMAIN=qualitysphere.github.io    # 自定義 LDAP 的域名,admin 賬號(hào)即 cn=admin,dc=qualitysphere,dc=github,dc=io
    volumes:
      - ./ldap/db:/var/lib/ldap
      - ./ldap/config:/etc/ldap
  ldap-phpldapadmin:
    container_name: ldap-phpldapadmin
    image: dinkel/phpldapadmin    # 如果拉取速度很慢寇蚊,可以換成 registry.cn-hangzhou.aliyuncs.com/bxwill/phpldapadmin
    restart: always
    ports:
      - "8080:80"
    environment:
      - LDAP_SERVER_HOST=ldap-openldap    # 使用 compose 啟動(dòng)容器笔时,可以直接使用服務(wù)名
    volumes:
      - ./ldap/templates:/etc/phpldapadmin/templates/creation/    # 掛載自定義模板目錄

重新運(yùn)行 docker-compose 命令:

docker-compose -f docker-compose.yaml up -d

ldap-phpldapadmin 容器會(huì)自動(dòng)重新創(chuàng)建:

ldap-openldap is up-to-date
Recreating ldap-phpldapadmin ... done

再次訪問 PhpLdapAdmin 頁面,需要重新登錄仗岸,登錄后點(diǎn)擊創(chuàng)建鏈接進(jìn)如模板列表頁面允耿,只會(huì)看到自己定義的模板:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市扒怖,隨后出現(xiàn)的幾起案子较锡,更是在濱河造成了極大的恐慌,老刑警劉巖盗痒,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蚂蕴,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡俯邓,警方通過查閱死者的電腦和手機(jī)骡楼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來稽鞭,“玉大人鸟整,你說我怎么就攤上這事‰蹋” “怎么了篮条?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)吩抓。 經(jīng)常有香客問我涉茧,道長(zhǎng),這世上最難降的妖魔是什么琴拧? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任降瞳,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘挣饥。我一直安慰自己除师,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布扔枫。 她就那樣靜靜地躺著汛聚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪短荐。 梳的紋絲不亂的頭發(fā)上倚舀,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音忍宋,去河邊找鬼痕貌。 笑死,一個(gè)胖子當(dāng)著我的面吹牛糠排,可吹牛的內(nèi)容都是我干的舵稠。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼入宦,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼哺徊!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起乾闰,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤落追,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后涯肩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體轿钠,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年病苗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了谣膳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡铅乡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出烈菌,到底是詐尸還是另有隱情阵幸,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布芽世,位于F島的核電站挚赊,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏济瓢。R本人自食惡果不足惜荠割,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蔑鹦,春花似錦夺克、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至哟忍,卻和暖如春狡门,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背锅很。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工其馏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人爆安。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓叛复,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親鹏控。 傳聞我的和親對(duì)象是個(gè)殘疾皇子致扯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345