Docker 尝试在分离的主机上放置两个锯齿形节点时出现问题

Docker 尝试在分离的主机上放置两个锯齿形节点时出现问题,docker,docker-compose,hyperledger,hyperledger-sawtooth,Docker,Docker Compose,Hyperledger,Hyperledger Sawtooth,我是sawtooth的新手,目前正在尝试在两个独立的主机(目前在同一个LAN网络中)上安装两个sawtooth节点 我使用文档中的撰写文件作为起点。 正如你从我的 我创建了两个独立的组合文件: :在创建区块链和genesis区块的第一台主机上启动 :启动第二台主机作为连接到第一台主机的对等主机 在第二台主机上,我还创建了一个.env文件 SEEDS=tcp://<local-ip-of-first-node>:8800 最后两条消息每隔一分钟左右重复一次 起初,我不知道在doc

我是sawtooth的新手,目前正在尝试在两个独立的主机(目前在同一个LAN网络中)上安装两个sawtooth节点

我使用文档中的撰写文件作为起点。 正如你从我的 我创建了两个独立的组合文件:

  • :在创建区块链和genesis区块的第一台主机上启动

  • :启动第二台主机作为连接到第一台主机的对等主机

在第二台主机上,我还创建了一个.env文件

SEEDS=tcp://<local-ip-of-first-node>:8800
最后两条消息每隔一分钟左右重复一次

起初,我不知道在
docker compose
文件中使用
expose
ports
之间的区别。
无论如何,现在,即使我使用
ports
将端口
8800
公开给外部网络,对于验证器,我的问题仍然存在


为什么会发生这种情况?

问题中列出的Docker compose文件是独立的,不打算跨Docker网络工作。您可以尝试仔细地将它们合并到一个Docker文件中

如果需要两个Docker compose文件,则必须确保网络端口已打开并可供各种容器访问。如果在多台主机上运行这些Docker compose文件,则需要将容器端口映射到主机。否则,在另一台主机上运行的容器将无法访问它们。因此,要回答这个问题,您必须为验证器容器使用“ports”标记,并确保其他主机可以看到验证器的容器端口8800

有关使用“端口”的更多信息,请参见此处


此外,请参阅此锯齿形TCP端口列表:

问题中提到的Docker compose文件可以在同一主机上运行Hyperledger锯齿形网络。如果您计划在不同的主机上运行这些compose文件,并使验证器容器相互通信,那么它们需要是可发现的

即使在.env文件中设置了种子,中的验证程序容器也无法被中的验证程序容器发现

要使验证程序服务相互通信,您可以使用Docker compose文件中的ports标记。这将允许您将容器端口映射到主机的端口。因此,您的主机现在将可用于本地网络中的另一台计算机。您还需要在genesis节点的主机上使用端口。这是供其他主机上的验证器配对的

例如,genesis节点的验证程序服务如下所示

validator-0:
image: hyperledger/sawtooth-validator:1.1
container_name: sawtooth-validator-0
expose:
  - 4004
  - 5050
  - 8000
  - 8800
ports:
  - "8800:8800"
...
上面显示的示例将主机的端口8800映射到容器8800端口

下面是关于如何在compose文件中使用端口标记的文档

validator-0:
image: hyperledger/sawtooth-validator:1.1
container_name: sawtooth-validator-0
expose:
  - 4004
  - 5050
  - 8000
  - 8800
ports:
  - "8800:8800"
...