1

我有两台机器:机器-A 和机器-B。两者都在不同的网络上。我使用 docker-compose.yml 在机器 A 上创建了一个 docker 容器,并在其中的端口 12345 上运行 litecoind 进程。我已将端口 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

现在在机器-B 上,我可以使用 litecoin 的 -addnode 选项直接连接到上述进程,并且可以看到区块链正在同步。

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

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

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

4

1 回答 1

0

可能的解决方案是

  1. 使用单个 docker-compose 文件将两个容器部署在同一节点上。

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

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

于 2019-05-24T11:09:34.823 回答