![](/img/trans.png)
[英]How do I start a docker container in Docker-Compose from an app running in another docker container
[英]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界面:
和吉拉:
接下来,我尝试在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.