从docker容器中我如何看到另一个docker容器?

时间:2018-01-28 15:19:05

标签: docker jira openldap

基于: 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界面:

https://172.17.0.3/

和jira on:

http://localhost:8087

接下来,我尝试在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] 

enter image description here

因此,似乎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

根据以下关于创建用户定义网络的答案,我现在有了一个连接:

enter image description here

我首先创建一个用户定义的网络:

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:

enter image description here

我需要更改哪些内容才能重新启用它?

1 个答案:

答案 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
相关问题