こんにちは。サイオステクノロジーの木村です。
今回は、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 # basewith 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の構築もとても簡単にできるので、ちょっとした検証環境を作る時などとても便利です。
是非お試しください!
お世話になります。
osixia/openldapで試していてこちらを参考にしております。
但し一つ確認したいですが、コンテナ作成時にLDAP_DOMAINを指定していますが、指定通りに作られますか。
私側では何回試してもディフォルト値のexample.orgになっております。
よろしくお願いします。
記事をご覧いただきありがとうございます!!
私はこちらの手順でデフォルト値を変更できております。
環境変数「LDAP_DOMAIN」は設定されていますでしょうか。
環境変数が設定されていればデフォルト値から変更ができるかと思います。
コンテナ起動後、コンテナ内部で以下のコマンドにより環境変数の内容を確認できますので、よろしければ確認してみてください。
printenv LDAP_DOMAIN
以上、宜しくお願いいたします。
回答ありがとうございます。
再度試してみたら動きました。 何かミスがあったようです。
ありがとうございました。