簡體   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