0

我目前正在对使用几个搬运工集装箱hyperledger blockchain:我怎样才能让几个搬运工容器之间的通信我的本地网络上

  • DEV-peer0.org1.example.com - 弹子-V5 0.9
  • peer0.org1.example.com
  • CouchDB的
  • orderer.example.com
  • CLI
  • ca.example.com

在默认配置下,它们都运行在同一台机器上。

我试图做到的,是给他们分在两个不同的计算机:

电脑1:

  • DEV-peer0.org1.example.com-弹珠-V5。 9
  • peer0.org1.example.com
  • CouchDB的

电脑2:

  • orderer.example.com
  • CLI
  • ca.example.com

我可以使用主机文件,使这项工作没有任何编辑文件的conf?

PC1:

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 
::1   localhost localhost.localdomain localhost6 localhost6.localdomain6 
10.31.128.146 orderer.example.com 
10.31.128.146 cli 
10.31.128.146 ca.example.com 

PC2:

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 
::1   localhost localhost.localdomain localhost6 localhost6.localdomain6 
10.31.128.198 dev-peer0.org1.example.com-marbles-v5.9 
10.31.128.198 peer0.org1.example.com 
10.31.128.198 couchdb 

我已经试过,我没有工作,但我不知道是否应该推动更多的到呀?

# 
# Copyright IBM Corp All Rights Reserved 
# 
# SPDX-License-Identifier: Apache-2.0 
# 
version: '2' 

networks: 
    basic: 

services: 
    ca.example.com: 
    image: hyperledger/fabric-ca:x86_64-1.0.0 
    environment: 
     - FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server 
     - FABRIC_CA_SERVER_CA_NAME=ca.example.com 
    ports: 
     - "7054:7054" 
    command: sh -c 'fabric-ca-server start --ca.certfile /etc/hyperledger/fabric-ca-server-config/org1.example.com-cert.pem --ca.keyfile /etc/hyperledger/fabric-ca-server-config/a22daf356b2aab5792ea53e35f66fccef1d7f1aa2b3a2b92dbfbf96a448ea26a_sk -b admin:adminpw -d' 
    volumes: 
     - ./crypto-config/peerOrganizations/org1.example.com/ca/:/etc/hyperledger/fabric-ca-server-config 
    container_name: ca.example.com 
    networks: 
     - basic 

    orderer.example.com: 
    container_name: orderer.example.com 
    image: hyperledger/fabric-orderer:x86_64-1.0.0 
    environment: 
     - ORDERER_GENERAL_LOGLEVEL=debug 
     - ORDERER_GENERAL_LISTENADDRESS=0.0.0.0 
     - ORDERER_GENERAL_GENESISMETHOD=file 
     - ORDERER_GENERAL_GENESISFILE=/etc/hyperledger/configtx/genesis.block 
     - ORDERER_GENERAL_LOCALMSPID=OrdererMSP 
     - ORDERER_GENERAL_LOCALMSPDIR=/etc/hyperledger/msp/orderer/msp 
    working_dir: /opt/gopath/src/github.com/hyperledger/fabric/orderer 
    command: orderer 
    ports: 
     - 7050:7050 
    volumes: 
     - ./config/:/etc/hyperledger/configtx 
     - ./crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/:/etc/hyperledger/msp/orderer 
     - ./crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/:/etc/hyperledger/msp/peerOrg1 
    networks: 
     - basic 

    peer0.org1.example.com: 
    container_name: peer0.org1.example.com 
    image: hyperledger/fabric-peer:x86_64-1.0.0 
    environment: 
     - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock 
     - CORE_PEER_ID=peer0.org1.example.com 
     - CORE_LOGGING_PEER=debug 
     - CORE_CHAINCODE_LOGGING_LEVEL=DEBUG 
     - CORE_PEER_LOCALMSPID=Org1MSP 
     - CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/peer/ 
     - CORE_PEER_ADDRESS=peer0.org1.example.com:7051 
     # # the following setting starts chaincode containers on the same 
     # # bridge network as the peers 
     # # https://docs.docker.com/compose/networking/ 
     - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=${COMPOSE_PROJECT_NAME}_basic 
     - CORE_LEDGER_STATE_STATEDATABASE=CouchDB 
     - CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=couchdb:5984 
    working_dir: /opt/gopath/src/github.com/hyperledger/fabric 
    command: peer node start 
    # command: peer node start --peer-chaincodedev=true 
    ports: 
     - 7051:7051 
     - 7053:7053 
    volumes: 
     - /var/run/:/host/var/run/ 
     - ./crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/etc/hyperledger/msp/peer 
     - ./crypto-config/peerOrganizations/org1.example.com/users:/etc/hyperledger/msp/users 
     - ./config:/etc/hyperledger/configtx 
    depends_on: 
     - orderer.example.com 
    networks: 
     - basic 

    couchdb: 
    container_name: couchdb 
    image: hyperledger/fabric-couchdb:x86_64-1.0.0 
    ports: 
     - 5984:5984 
    environment: 
     DB_URL: http://localhost:5984/member_db 
    networks: 
     - basic 

    cli: 
    container_name: cli 
    image: hyperledger/fabric-tools:x86_64-1.0.0 
    tty: true 
    environment: 
     - GOPATH=/opt/gopath 
     - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock 
     - CORE_LOGGING_LEVEL=DEBUG 
     - CORE_PEER_ID=cli 
     - CORE_PEER_ADDRESS=peer0.org1.example.com:7051 
     - CORE_PEER_LOCALMSPID=Org1MSP 
     - CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected]/msp 
     - CORE_CHAINCODE_KEEPALIVE=10 
    working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer 
    command: /bin/bash 
    volumes: 
     - /var/run/:/host/var/run/ 
     - ./../chaincode/:/opt/gopath/src/github.com/ 
     - ./crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ 
    networks: 
     - basic 
    #depends_on: 
    # - orderer.example.com 
    # - peer0.org1.example.com 
    # - couchdb 
+2

在单台机器上运行时,容器通过“内部”Docker网络进行通信,该网络是该机器专用的。分割撰写文件时,会创建两个网络,每个网络都是私有的。您需要公开要用于通信的端口。如果您提供您正在使用的撰写文件,则可能是特定的。 –

+0

我已添加请求的文件:) – goldiman

回答

0

你需要使用/添加extra_hosts到你的每一个撰写服务的定义,如果你想下去的主机路由。

0

我会建议为覆盖网络启用Swarm模式。理想情况下,您甚至可以在Swarm模式下运行容器,但对于覆盖网络来说这不是必需的。

一台主机,运行以下命令以创建一个管理员:

docker swarm init 

然后你的第二个主机上运行的输出docker swarm join命令。


选项A:只覆盖网络,你需要创建用作可连接使用它的群模式之外的网络:

docker network create -d overlay --attachable basic 

,然后在撰写文件,调整网络定义是外部的:

version: '2' 
networks: 
    basic: 
    external: 
     name: basic 

因此,您的容器将能够通过覆盖网络直接进行通信。


选项B:要使用群模式下运行的容器,你可以跳过网络创建和网络设置外部。只需将您的版本更新到您的compose.yml文件中的version: '3',我也会删除“container_name”行。然后运行:

docker stack deploy -c compose.yml hyperledger 

创建一个名为hyperledger的堆栈。

相关问题