基于: https://github.com/osixia/docker-phpLDAPadmin
我正在运行OpenLDAP和phpLDAPadmin容器:
docker run --name ldap-service --hostname ldap-service --detach -p 389:389 -p 636:636 --detach osixia/openldap:1.1.8
docker run --name phpldapadmin-service --hostname phpldapadmin-service --link ldap-service:ldap-host --env PHPLDAPADMIN_LDAP_HOSTS=ldap-host --detach osixia/phpldapadmin:0.7.1
(基于以下建议,我也尝试过-p 689:689
并在jira中进行相应调整但得到相同的错误。)
我还从JIRA图像中启动另一个容器:
docker run -p 0.0.0.0:8087:8087 -d --name mycontainer jiraimage tail -f/dev/null
在我的主机上的浏览器中,我可以访问phpldapadmin web界面:
和jira on:
接下来,我尝试在JIRA中配置指向正在运行的OpenLDAP服务器的LDAP目录,但得到以下错误:
Connection test failed. Response from the server:
ldap-service:636; nested exception is javax.naming.CommunicationException: ldap-service:636 [Root exception is java.net.UnknownHostException: ldap-service]
因此,似乎JIRA容器无法看到OpenLDAP容器的主机名。
我也曾在jira方面尝试过:172.17.0.3
,但结果相同。
如何让jira容器看到OpenLDAP容器?
更多信息:
# docker version
Client:
Version: 17.09.0-ce
API version: 1.32
Go version: go1.8.3
Git commit: afdb6d4
Built: Tue Sep 26 22:42:45 2017
OS/Arch: linux/amd64
Server:
Version: 17.09.0-ce
API version: 1.32 (minimum version 1.12)
Go version: go1.8.3
Git commit: afdb6d4
Built: Tue Sep 26 22:41:24 2017
OS/Arch: linux/amd64
Experimental: false
和
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
de167e404cc3 jiraimage tail -f /dev/null" 6 seconds ago Up 4 seconds 0.0.0.0:8087->8087/tcp mycontainer
3a4a771037ac osixia/phpldapadmin:0.7.1 "/container/tool/run" 6 seconds ago Up 5 seconds 80/tcp, 443/tcp phpldapadmin-service
aa2d78fdcd99 osixia/openldap:1.1.8-001 "/container/tool/run" 7 seconds ago Up 5 seconds 0.0.0.0:389->389/tcp, 0.0.0.0:636->636/tcp, 636/tcp ldap-service
根据以下关于创建用户定义网络的答案,我现在有了一个连接:
我首先创建一个用户定义的网络:
docker network create --driver bridge sample-network
并使用以下命令启动我的容器:
docker run --network=sample-network --name ldap-service --hostname ldap-service --detach -p 389:389 -p 636:636 --detach osixia/openldap:1.1.8
docker run --network=sample-network --name phpldapadmin-service --hostname phpldapadmin-service --env PHPLDAPADMIN_LDAP_HOSTS=ldap-host --detach osixia/phpldapadmin:0.7.1
docker run --network=sample-network -p 0.0.0.0:8087:8087 -d --name mycontainer jiraimage tail -f/dev/null
我必须从LDAP容器中删除--link ldap-service:ldap-host
,以便phpadmin无法再连接到openldap:
我需要更改哪些内容才能重新启用它?
答案 0 :(得分:2)
首先只需定义一个网络,然后将两个容器添加到该网络中
见docker container networking。
(这取代了obsolete legacy container links)
然后,您可以使用其容器IP地址引用您的LDAP。
连接到默认网桥的容器可以通过IP地址相互通信。 Docker不支持默认网桥上的自动服务发现。
当BMitch添加in the comments时,您应该引用ldap及其服务名称,而不是ldap-host
:
--env PHPLDAPADMIN_LDAP_HOSTS=ldap-service