CentOS 7 に Docker で OpenLDAP コンテナを構築する

★★★ Live配信告知 ★★★ぜひお申込みください!
◆◇SIOS PS Live配信 第20回◆◇
9/28(水) 19:00~ 〜 Google Cloudで実現したクラウド型電子カルテサービス「INDIGO NOTE」の開発小話 〜 開発に携わった3人のエンジニアが「Indigo Note」の概要、フロント開発・API開発をお話しします。

こんにちは。サイオステクノロジーの木村です。

今回は、CentOSにDockerでOpenLDAPコンテナを構築する方法についてご紹介します。

環境

CentOS 7.9

Dockerのインストール

CentOSにDockerをインストールする手順を記載します。
(インストール手順については公式ページを参考にしました。)

1. Docker Engine をインストールするには、メンテナンスバージョンが必要なため、以下のコマンドを実行しOSを最新化します。

# yum update
# yum upgrade

2. 古いバージョンの docker または docker-engine がインストールされている場合は、関連する依存関係とともにアンインストールします。

# yum remove docker \
             docker-client \
             docker-client-latest \
             docker-common \
             docker-latest \
             docker-latest-logrotate \
             docker-logrotate \
             docker-engine

3. 安定版 Yum リポジトリを設定します。

# yum install -y yum-utils
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

4. Docker CE をインストールします。

# yum install docker-ce docker-ce-cli containerd.io

以上でインストールは完了です。

5. Dockerを起動するには、以下のコマンドを実行します。

# systemctl start docker

6. OS 起動時に Docker が自動起動するように設定するには以下のコマンドを実行します。

# systemctl enable docker

Dockerfileの作成

1. 以下のようにDockerfileを作成します。


FROM osixia/openldap:1.5.0

#ドメイン
ENV LDAP_DOMAIN=example.com
#管理者パスワード
ENV LDAP_ADMIN_PASSWORD=password

# ユーザーデータを作成するためのLDIFファイルをコンテナにコピー(構築時にユーザーデータを登録しないなら不要)
ADD user.ldif /container/service/slapd/assets/config/bootstrap/ldif/custom

※ OpenLDAP用のイメージはこちらに公開されています。

2. 今回は、構築時にユーザーデータも登録したいと思いますので、以下のLDIFファイル(user.ldif)を作成します。
(構築時にユーザーデータを登録しない場合は不要です。)


dn: ou=people,dc=example,dc=com
objectClass: organizationalUnit
ou: people

dn: uid=testuser1,ou=people,dc=example,dc=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
uid: testuser1
cn: testuser1
sn: testuser1
userPassword: {SSHA}a4483ce7bd7083999bef6a74117a443239e67fac

dn: uid=testuser2,ou=people,dc=example,dc=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
uid: testuser2
cn: testuser2
sn: testuser2
userPassword: {SSHA}f901fbc1ca36036957cef4bdea152832ef89fb33

3. 作成した DockerFile、user.ldif を任意の同じディレクトリに配置します。
例)

/opt
 └── ldap
     ├── Dockerfile
     └── user.ldif

※Dockerfileについて詳しく知りたい方は以下の記事もご参照ください。
【連載】世界一わかりみが深いコンテナ & Docker入門 〜 その3:Dockerfileってなに? 〜

コンテナの起動

1. 上記Dockerfileの作成でファイルを配置したディレクトリに移動し、以下のコマンドを実行して、イメージを作成します。

# docker build -t ldapimg1 .

2. 以下のコマンドを実行し、作成したイメージをもとにコンテナを起動します。

# docker run -d -p 389:389 --name testldap ldapimg1:latest

以降は、以下のコマンドでコンテナの起動と停止を行います。

起動

docker start testldap

停止

docker stop testldap

確認

以下のコマンドで作成した環境に接続し、ユーザーが検索できるか確認します。

ldapsearch -x -H ldap://<ホスト名>:389 -D "cn=admin,dc=example,dc=com" -b "dc=example,dc=com" -w "password" objectClass=person filter uid

以下のように user.ldif に記載したユーザーが検索できれば成功です。

% ldapsearch -x -H ldap://xx.xx.xx.xx:389 -D "cn=admin,dc=example,dc=com" -b "dc=example,dc=com" -w "password" objectClass=person filter uid
# extended LDIF
#
# LDAPv3
# base  with scope subtree
# filter: objectClass=person
# requesting: filter uid 
#

# testuser1, people, example.com
dn: uid=testuser1,ou=people,dc=example,dc=com
uid: testuser1

# testuser2, people, example.com
dn: uid=testuser2,ou=people,dc=example,dc=com
uid: testuser2

# search result
search: 2
result: 0 Success

# numResponses: 3
# numEntries: 2

Dockerを使うとOpenLDAPの構築もとても簡単にできるので、ちょっとした検証環境を作る時などとても便利です。
是非お試しください!





ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!


ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

3 Comments

  1. お世話になります。
    osixia/openldapで試していてこちらを参考にしております。

    但し一つ確認したいですが、コンテナ作成時にLDAP_DOMAINを指定していますが、指定通りに作られますか。
    私側では何回試してもディフォルト値のexample.orgになっております。

    よろしくお願いします。

    • 記事をご覧いただきありがとうございます!!

      私はこちらの手順でデフォルト値を変更できております。
      環境変数「LDAP_DOMAIN」は設定されていますでしょうか。
      環境変数が設定されていればデフォルト値から変更ができるかと思います。
      コンテナ起動後、コンテナ内部で以下のコマンドにより環境変数の内容を確認できますので、よろしければ確認してみてください。
      printenv LDAP_DOMAIN

      以上、宜しくお願いいたします。

      • 回答ありがとうございます。
        再度試してみたら動きました。 何かミスがあったようです。
        ありがとうございました。

Leave a Reply

Your email address will not be published.


*