[英]I want to connect 2 containers with each other in a Docker-Swarm
我想將兩個容器相互連接......我從創建一個覆蓋網絡mynet
:
docker network create -d overlay mynet
之后,我創建了第一個服務activemq
:
docker service create --name activemq -p 61616:61616 -p 8161:8161 --replicas 1 --network mynet rmohr/activemq
這啟動並運行良好,我也可以訪問 WebUI http://localhost:8161/admin/
現在我想啟動我的服務TimeService我在容器中有以下設置:
docker service create --name timeservice -p 7000:7000 --replicas 1 --network mynet ni920/timeserviceplain:latest
java.naming.provider.url=tcp://localhost:61616
java.naming.user=admin
java.naming.password=admin
io.jexxa.rest.host=0.0.0.0
io.jexxa.rest.port=7000
所以它應該通過tcp://localhost:61616
與ActiveMQ
但它沒有。
通過在非Swarm
環境或Kubernetes-Pod
完美通信的方式,你們知道我應該嘗試什么嗎?
如果您希望您的容器相互通信,您可以使用它們的名稱,然后讓網絡驅動程序解析它們的 ip。
這是來自 docker docs 的網絡驅動程序摘要:
- 當您需要多個容器在同一個 Docker 主機上進行通信時,用戶定義的橋接網絡是最佳選擇。
- 當網絡堆棧不應與 Docker 主機隔離,但您希望容器的其他方面被隔離時,主機網絡是最佳選擇。
- 當您需要在不同 Docker 主機上運行的容器進行通信時,或者當多個應用程序使用 swarm 服務協同工作時,覆蓋網絡是最佳選擇。
- 當您從 VM 設置遷移或需要容器看起來像網絡上的物理主機時, Macvlan 網絡是最佳選擇,每個主機都有唯一的 MAC 地址。
- 第三方網絡插件允許您將 Docker 與專門的網絡堆棧集成。
在您的情況下,將localhost替換為服務名稱activemq 。
java.naming.provider.url=tcp://activemq:61616
.
.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.