docker - 无法监听来自远程Docker容器的docker容器中运行的服务

标签 docker docker-compose litecoin

我有两台机器:机器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

我希望以上两个单独的容器在两个单独的远程计算机上相互通信。我想念什么?请帮忙。谢谢。

最佳答案

可能的解决方案是

  • 使用单个docker-compose文件将两个容器部署在同一节点上。
  • 如果您的要求是将容器绝对部署在两个不同的节点上,那么如果使用compose,则需要创建一个swarm集群。
  • 如果要在同一节点上创建两个不同的撰写文件,则为已回答here
  • 关于docker - 无法监听来自远程Docker容器的docker容器中运行的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56290805/

    相关文章:

    docker - 为什么redis不能访问docker-compose中的磁盘?

    maven - 如果 docker 不可用,如何不使用 docker 插件构建gradle子项目?

    hadoop - 使用 Docker 的多节点 Hadoop 集群

    node.js - 使用docker-compose时如何为mongodb图像添加--auth?

    docker - 如何从 docker-compose.yml 中定义 docker 镜像名称?

    docker - 无法在 docker compose 上启动容器

    Docker:带有 ssl 后端的 nginx-proxy