繁体   English   中英

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

[英]From a docker container how do I see another docker container?

基于: 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/

和吉拉:

HTTP://本地主机: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] 

在此处输入图片说明

因此,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:

在此处输入图片说明

我需要更改以重新启用该功能?

只需首先定义一个网络,然后将两个容器添加到该网络。
请参阅Docker容器网络
(这将替换过时的旧容器链接

然后,您可以使用其容器IP地址引用LDAP。

连接到默认网桥网络的容器可以通过IP地址相互通信。 Docker不支持默认网桥网络上的自动服务发现。

正如BMitch 在注释中添加的那样 ,您应该使用其服务名称而不是ldap-host引用ldap:

--env PHPLDAPADMIN_LDAP_HOSTS=ldap-service

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM