【问题标题】:Setting up IPFS Cluster on docker environment在 docker 环境中设置 IPFS 集群
【发布时间】:2019-03-02 22:28:14
【问题描述】:

我正在尝试使用 docker 设置一个 2 节点私有 IPFS 集群。为此,我使用ipfs/ipfs-cluster:latest 图像。

我的 docker-compose 文件看起来像:

version: '3'
services:
  peer-1:
    image: ipfs/ipfs-cluster:latest
    ports:
      - 8080:8080
      - 4001:4001
      - 5001:5001
    volumes:
      - ./cluster/peer1/config:/data/ipfs-cluster
  peer-2:
    image: ipfs/ipfs-cluster:latest
    ports:
      - 8081:8080
      - 4002:4001
      - 5002:5001
    volumes:
      - ./cluster/peer2/config:/data/ipfs-cluster

启动容器时出现以下错误

ERROR   ipfshttp: error posting to IPFS: Post http://127.0.0.1:5001/api/v0/repo/stat?size-only=true: dial tcp 127.0.0.1:5001: connect: connection refused ipfshttp.go:745

请帮助解决问题。

是否有任何关于如何在 docker 上设置 IPFS 集群的适当文档。 This 文档遗漏了很多细节。

谢谢。

【问题讨论】:

    标签: docker ipfs


    【解决方案1】:

    我想出了如何在 docker 环境中运行多节点 IPFS 集群。 当前版本为 0.4.17 的 ipfs/ipfs-cluster 不运行 ipfs peer,即其中的 ipfs/go-ipfs。我们需要单独运行它。

    所以现在为了在 docker 环境中运行多节点(本例中为 2 个节点)IPSF 集群,我们需要运行 2 个 IPFS 对等容器和 2 个 IPFS 集群容器 1 对应于每个对等点。

    所以你的 docker-compose 文件将如下所示:

    version: '3'
    
    networks:
      vpcbr:
        driver: bridge
        ipam:
         config:
           - subnet: 10.5.0.0/16
    
    services:
      ipfs0:
        container_name: ipfs0
        image: ipfs/go-ipfs
        ports:
              - "4001:4001"
              - "5001:5001"
              - "8081:8080"
        volumes:
          - ./var/ipfs0-docker-data:/data/ipfs/
          - ./var/ipfs0-docker-staging:/export
        networks:
          vpcbr:
            ipv4_address: 10.5.0.5
    
      ipfs1:
        container_name: ipfs1
        image: ipfs/go-ipfs
        ports:
              - "4101:4001"
              - "5101:5001"
              - "8181:8080"
        volumes:
          - ./var/ipfs1-docker-data:/data/ipfs/
          - ./var/ipfs1-docker-staging:/export
        networks:
          vpcbr:
            ipv4_address: 10.5.0.7
    
      ipfs-cluster0:
        container_name: ipfs-cluster0
        image: ipfs/ipfs-cluster
        depends_on:
          - ipfs0
        environment:
          CLUSTER_SECRET: 1aebe6d1ff52d96241e00d1abbd1be0743e3ccd0e3f8a05e3c8dd2bbbddb7b93
          IPFS_API: /ip4/10.5.0.5/tcp/5001
        ports:
              - "9094:9094"
              - "9095:9095"
              - "9096:9096"
        volumes:
          - ./var/ipfs-cluster0:/data/ipfs-cluster/
        networks:
          vpcbr:
            ipv4_address: 10.5.0.6
    
      ipfs-cluster1:
        container_name: ipfs-cluster1
        image: ipfs/ipfs-cluster
        depends_on:
          - ipfs1
          - ipfs-cluster0
        environment:
          CLUSTER_SECRET: 1aebe6d1ff52d96241e00d1abbd1be0743e3ccd0e3f8a05e3c8dd2bbbddb7b93
          IPFS_API: /ip4/10.5.0.7/tcp/5001
        ports:
              - "9194:9094"
              - "9195:9095"
              - "9196:9096"
        volumes:
          - ./var/ipfs-cluster1:/data/ipfs-cluster/
        networks:
          vpcbr:
            ipv4_address: 10.5.0.8
    

    这将旋转 2 个对等 IPFS 集群,我们可以使用任何对等点存储和检索文件。

    这里的问题是我们需要将 IPFS_API 作为环境变量提供给 ipfs-cluster,以便 ipfs-cluster 知道其对应的对等方。对于这两个 ipfs-cluster,我们需要有相同的 CLUSTER_SECRET。

    【讨论】:

      【解决方案2】:

      根据你发的文章:

      容器不运行 go-ipfs。您应该运行 IPFS 守护进程 例如,单独使用 ipfs/go-ipfs Docker 容器。我们 建议安装 /data/ipfs-cluster 文件夹以提供自定义, 工作配置,以及集群数据的持久性。 这通常通过传递 -v 来实现 :/data/ipfs-cluster 到 docker run)。

      如果实际上您需要连接到 docker-compose 中的另一个服务,您可以简单地通过服务名称来引用它,因为主机名条目是在 docker-compose 中的所有容器中创建的,因此服务可以与每个容器进行通信其他名称而不是 ip

      另外:

      除非您使用 --net=host 运行 docker,否则您需要设置 $IPFS_API 或确保配置具有正确的 node_multiaddress。

      docker-compose 中 --net=host 的等价物是network_mode: "host"(与端口映射不兼容)https://docs.docker.com/compose/compose-file/#network_mode

      【讨论】:

      • 是否有关于如何使用 docker 设置 IPFS 集群的教程或示例。关于单独运行go-ipfs docker,如果我们单独运行,那么如何将go-ipfs和ipfs-cluster连接起来
      猜你喜欢
      • 1970-01-01
      • 2011-10-30
      • 2019-05-02
      • 1970-01-01
      • 2019-03-13
      • 1970-01-01
      • 2013-12-30
      • 2014-09-30
      • 2019-12-24
      相关资源
      最近更新 更多