无法从远程docker容器侦听docker容器内运行的服务

无法从远程docker容器侦听docker容器内运行的服务,docker,docker-compose,litecoin,Docker,Docker Compose,Litecoin,我有两台机器:机器A和机器B。它们都在不同的网络上。我使用docker-compose.yml在machine-a上创建了一个docker容器,并在其中的12345端口上运行LiteCond进程。我已将端口12345转发到主机A的端口80 version: '3' services: node1: build: . cap_add: - ALL command: litecoind -regtest -server -rpcuser=rpc -rpcpas

我有两台机器:机器A和机器B。它们都在不同的网络上。我使用docker-compose.yml在machine-a上创建了一个docker容器,并在其中的12345端口上运行LiteCond进程。我已将端口12345转发到主机A的端口80

version: '3'
services:
  node1:
    build: .
    cap_add:
      - ALL
    command: litecoind -regtest -server -rpcuser=rpc -rpcpassword=x -rpcport=10340  --datadir=/root/litecoind-simnet/ -port=12345
    networks:
      vpcbr:
        ipv4_address: 10.9.0.11
    ports:
      - 80:12345
networks:
  vpcbr:
    driver: bridge
    ipam:
     config:
       - subnet: 10.9.0.0/16
现在在machine-B上,我可以使用litecoin的-addnode选项直接连接到上述流程,并可以看到区块链同步

当我在machine-B上创建一个容器并尝试使用machine-B上的docker-compose.yml文件通过-addnode连接到上述相同的进程时,就会出现问题。在这种情况下,litecond进程保持不可见,区块链不同步

version: '3'
services:
  node1:
    build: .
    cap_add:
      - ALL
    command: litecoind -regtest -addnode=<x.x.x.x:80> -rpcuser=rpc -rpcpassword=x -rpcport=10340  --datadir=/root/litecoind-simnet/ -port=12345
    networks:
      vpcbr:
        ipv4_address: 10.8.0.11
    ports:
      - 90:12345
networks:
  vpcbr:
    driver: bridge
    ipam:
     config:
       - subnet: 10.8.0.0/16
版本:“3”
服务:
节点1:
生成:。
第(二)章增补:
-全部
命令:litecond-regtest-addnode=-rpcuser=rpc-rpcpassword=x-rpcport=10340--datadir=/root/litecond-simnet/-port=12345
网络:
vpcbr:
ipv4_地址:10.8.0.11
端口:
- 90:12345
网络:
vpcbr:
司机:驾驶台
ipam:
配置:
-子网:10.8.0.0/16

我希望上面两个独立的容器在两个独立的远程机器上相互通信。我错过了什么?请帮忙。谢谢。

可能的解决方案是

  • 使用单个docker compose文件在同一节点上部署两个容器

  • 如果您的需求是绝对地将容器部署在两个不同的节点上,那么如果您使用compose,则需要创建一个集群

  • 如果您想在同一节点上创建两个不同的撰写文件,这就是答案


  • 可能的解决办法是

  • 使用单个docker compose文件在同一节点上部署两个容器

  • 如果您的需求是绝对地将容器部署在两个不同的节点上,那么如果您使用compose,则需要创建一个集群

  • 如果您想在同一节点上创建两个不同的撰写文件,这就是答案


  • 谢谢你的回复。我想在两台不同的远程机器上完全部署容器,因为我试图模拟从p2p网络添加和删除任何节点的真实情况。根据我的理解,在swarm模式下,我们必须使用“覆盖”网络选项,我已经尝试过,并且工作良好,但我想看看是否可以使用docker网络的桥接网络选项。那么,不使用swarm是否可能?谢谢您的回复。我想在两台不同的远程机器上完全部署容器,因为我试图模拟从p2p网络添加和删除任何节点的真实情况。根据我的理解,在swarm模式下,我们必须使用“覆盖”网络选项,我已经尝试过,并且工作良好,但我想看看是否可以使用docker网络的桥接网络选项。那么,不使用swarm有可能吗?