簡體   English   中英

我想在 Docker-Swarm 中將 2 個容器相互連接

[英]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:61616ActiveMQ但它沒有。

通過在非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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM