Playground for Hyperledger - 启动网络

我们将利用docker-compose脚本来启动我们的区块链网络,并用之前生成的genesis.block创世块来引导orderer。

在之前的示例中,我们使用的是docker-compose-cli.yaml来启动网络,为了详细了解每个节点和其配置的意义,我们分拆成多个yaml分别启动来看。

在first-network文件夹下创建yaml文件,我们将把自己写的所有的yaml文件放在里面。

CA

首先是CA的配置文件docker-compose-ca.yaml:

version: '2'

networks:
  byfn:
services:
  ca1:
    image: hyperledger/fabric-ca
    environment:
      - FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server
      - FABRIC_CA_SERVER_CA_NAME=ca-org1
      - FABRIC_CA_SERVER_TLS_ENABLED=${ENABLE_TLS}
      - FABRIC_CA_SERVER_TLS_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org1.example.com-cert.pem
      - FABRIC_CA_SERVER_TLS_KEYFILE=/etc/hyperledger/fabric-ca-server-config/e5ac2c775a1785aab2314e9a37903b546094990c7b23843fd58aaa323246b4a1_sk
    ports:
      - "7054:7054"
    command: sh -c 'fabric-ca-server start --ca.certfile /etc/hyperledger/fabric-ca-server-config/ca.org1.example.com-cert.pem --ca.keyfile /etc/hyperledger/fabric-ca-server-config/e5ac2c775a1785aab2314e9a37903b546094990c7b23843fd58aaa323246b4a1_sk -b admin:adminpw -d'
    volumes:
      - ../crypto-config/peerOrganizations/org1.example.com/ca/:/etc/hyperledger/fabric-ca-server-config
    network_mode: host
    container_name: ca_peerOrg1
    networks:
      - byfn

  ca2:
    image: hyperledger/fabric-ca
    environment:
      - FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server
      - FABRIC_CA_SERVER_CA_NAME=ca-org2
      - FABRIC_CA_SERVER_TLS_ENABLED=${ENABLE_TLS}
      - FABRIC_CA_SERVER_TLS_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org2.example.com-cert.pem
      - FABRIC_CA_SERVER_TLS_KEYFILE=/etc/hyperledger/fabric-ca-server-config/478b238f352735a9e7454af1180f633cee8c50bfe2513510d8f38970b89c7ecc_sk
    ports:
      - "8054:7054"
    command: sh -c 'fabric-ca-server start --ca.certfile /etc/hyperledger/fabric-ca-server-config/ca.org2.example.com-cert.pem --ca.keyfile /etc/hyperledger/fabric-ca-server-config/478b238f352735a9e7454af1180f633cee8c50bfe2513510d8f38970b89c7ecc_sk -b admin:adminpw -d'
    volumes:
      - ../crypto-config/peerOrganizations/org2.example.com/ca/:/etc/hyperledger/fabric-ca-server-config
    network_mode: host
    container_name: ca_peerOrg2
    networks:
      - byfn

我们创建了2个ca容器,端口分别为本机的7054和8054,每个ca对应不同的org组织。
需要注意的是,这里volumes是挂载的外部路径,这个路径一定要写对,因为配置文件是在yaml文件夹中,所以需要../,FABRIC_CA_SERVER_TLS_KEYFILE和command中的私钥文件名也要替换成你自己本机路径下的名字。

command命令是ca服务器启动之后的初始化命令,传入参数包含了证书、私钥等配置,还有admin用户的用户名和密码admin: adminpw,如果要修改ca的admin密码,要对应修改这个地方。

启动网路:

$ CHANNEL_NAME=$CHANNEL_NAME TIMEOUT=60 ENABLE_TLS=true docker-compose -f yaml/docker-compose-ca.yaml up -d
Creating network "net_default" with the default driver
Recreating ca_peerOrg2 ...
Recreating ca_peerOrg1 ...
Recreating ca_peerOrg1
Recreating ca_peerOrg2 ... done

查看下docker容器是否两个ca节点都启动了:

$ docker ps -a
CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS                    NAMES
2a23424f40e9        hyperledger/fabric-ca   "sh -c 'fabric-ca-..."   39 seconds ago      Up 53 seconds       0.0.0.0:8054->7054/tcp   ca_peerOrg2
a1db6e04d736        hyperledger/fabric-ca   "sh -c 'fabric-ca-..."   39 seconds ago      Up 54 seconds       0.0.0.0:7054->7054/tcp   ca_peerOrg1

现在我们可以进入ca1容器,看看他里面都有些什么东西:

$ docker exec -it ca_peerOrg1 /bin/bash
$ cd /etc/hyperledger/fabric-ca-server
ls

ca-cert.pem ca-key.pem fabric-ca-server-config.yaml fabric-ca-server.db msp

有一些根证书和私钥,yaml文件里包含了ca节点的初始化配置,db是ca验证需要存储的一些账号信息。

Orderer

创建docker-compose-base.yaml文件:

version: '2'

services:

  orderer0.example.com:
    hostname: orderer0
    domainname: example.com
    container_name: orderer0.example.com
    image: hyperledger/fabric-orderer
    environment:
      - ORDERER_GENERAL_LOGLEVEL=ERROR
      - ORDERER_GENERAL_LISTENADDRESS=0.0.0.0
      - ORDERER_GENERAL_GENESISMETHOD=file
      - ORDERER_GENERAL_GENESISFILE=/var/hyperledger/orderer/genesis.block
      - ORDERER_GENERAL_LOCALMSPID=OrdererMSP
      - ORDERER_GENERAL_LOCALMSPDIR=/var/hyperledger/orderer/msp
      # enabled TLS
      - ORDERER_KAFKA_RETRY_PERIOD=3s
      - ORDERER_KAFKA_RETRY_STOP=10s
      - ORDERER_KAFKA_VERBOSE=true
      - ORDERER_GENERAL_TLS_ENABLED=${ENABLE_TLS}
      - ORDERER_GENERAL_TLS_PRIVATEKEY=/var/hyperledger/orderer/tls/server.key
      - ORDERER_GENERAL_TLS_CERTIFICATE=/var/hyperledger/orderer/tls/server.crt
      - ORDERER_GENERAL_TLS_ROOTCAS=[/var/hyperledger/orderer/tls/ca.crt]
    working_dir: /opt/gopath/src/github.com/hyperledger/fabric
    command: /bin/bash -c 'sleep 10 && orderer'
    volumes:
       - ../channel-artifacts/genesis.block:/var/hyperledger/orderer/genesis.block
       - ../crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp:/var/hyperledger/orderer/msp
       - ../crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/tls/:/var/hyperledger/orderer/tls
    ports:
      - 7050:7050

  orderer1.example.com:
    hostname: orderer1.example.com
    container_name: orderer1.example.com
    image: hyperledger/fabric-orderer
    environment:
      - ORDERER_GENERAL_LOGLEVEL=ERROR
      - ORDERER_GENERAL_LISTENADDRESS=0.0.0.0
      - ORDERER_GENERAL_GENESISMETHOD=file
      - ORDERER_GENERAL_GENESISFILE=/var/hyperledger/orderer/genesis.block
      - ORDERER_GENERAL_LOCALMSPID=OrdererMSP
      - ORDERER_GENERAL_LOCALMSPDIR=/var/hyperledger/orderer/msp
      - ORDERER_KAFKA_RETRY_PERIOD=3s
      - ORDERER_KAFKA_RETRY_STOP=10s
      # enabled TLS
      - ORDERER_KAFKA_VERBOSE=true
      - ORDERER_GENERAL_TLS_ENABLED=${ENABLE_TLS}
      - ORDERER_GENERAL_TLS_PRIVATEKEY=/var/hyperledger/orderer/tls/server.key
      - ORDERER_GENERAL_TLS_CERTIFICATE=/var/hyperledger/orderer/tls/server.crt
      - ORDERER_GENERAL_TLS_ROOTCAS=[/var/hyperledger/orderer/tls/ca.crt]
    working_dir: /opt/gopath/src/github.com/hyperledger/fabric
    command: /bin/bash -c 'sleep 10  && orderer'
    volumes:
       - ../channel-artifacts/genesis.block:/var/hyperledger/orderer/genesis.block
       - ../crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/msp:/var/hyperledger/orderer/msp
       - ../crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/tls/:/var/hyperledger/orderer/tls
    ports:
      - 8050:7050

  orderer2.example.com:
    hostname: orderer2.example.com
    container_name: orderer2.example.com
    image: hyperledger/fabric-orderer
    environment:
      - ORDERER_GENERAL_LOGLEVEL=ERROR
      - ORDERER_GENERAL_LISTENADDRESS=0.0.0.0
      - ORDERER_GENERAL_GENESISMETHOD=file
      - ORDERER_GENERAL_GENESISFILE=/var/hyperledger/orderer/genesis.block
      - ORDERER_GENERAL_LOCALMSPID=OrdererMSP
      - ORDERER_GENERAL_LOCALMSPDIR=/var/hyperledger/orderer/msp
      # enabled TLS
      - ORDERER_KAFKA_RETRY_PERIOD=3s
      - ORDERER_KAFKA_RETRY_STOP=10s
      - ORDERER_KAFKA_VERBOSE=true
      - ORDERER_GENERAL_TLS_ENABLED=${ENABLE_TLS}
      - ORDERER_GENERAL_TLS_PRIVATEKEY=/var/hyperledger/orderer/tls/server.key
      - ORDERER_GENERAL_TLS_CERTIFICATE=/var/hyperledger/orderer/tls/server.crt
      - ORDERER_GENERAL_TLS_ROOTCAS=[/var/hyperledger/orderer/tls/ca.crt]
    working_dir: /opt/gopath/src/github.com/hyperledger/fabric
    command: /bin/bash -c 'sleep 10 && orderer'
    volumes:
       - ../channel-artifacts/genesis.block:/var/hyperledger/orderer/genesis.block
       - ../crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/msp:/var/hyperledger/orderer/msp
       - ../crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/:/var/hyperledger/orderer/tls
    ports:
      - 9050:7050

创建docker-compose-orderer.yaml文件:

version: '2'

networks:
  byfn:
services:

  orderer0.example.com:
    extends:
      file:   docker-compose-base.yaml
      service: orderer0.example.com
    container_name: orderer0.example.com
    depends_on:
      - kafka0
    networks:
      - byfn

  orderer1.example.com:
    extends:
      file:   docker-compose-base.yaml
      service: orderer1.example.com
    container_name: orderer1.example.com
    depends_on:
      - kafka0
    networks:
      - byfn

  orderer2.example.com:
    extends:
      file:   docker-compose-base.yaml
      service: orderer2.example.com
    container_name: orderer2.example.com
    depends_on:
      - kafka0
    networks:
      - byfn

因为Orderer依赖于Kafka,Kafka依赖于Zookeeper,所以我统一都放在了一个yaml文件中。

启动Orderer:

$ CHANNEL_NAME=$CHANNEL_NAME TIMEOUT=60 ENABLE_TLS=true docker-compose -f yaml/docker-compose-orderer.yaml up -d
Creating orderer0.example.com ...
Creating orderer1.example.com ...
Creating orderer2.example.com ... done

再看看容器,没有问题,ca,orderer都成功启动:

$ docker ps
CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS              PORTS                                              NAMES
a6e078efdbc8        hyperledger/fabric-orderer     "/bin/bash -c 'sle..."   50 seconds ago      Up About a minute   0.0.0.0:8050->7050/tcp                             orderer1.example.com
0d455f0d6062        hyperledger/fabric-orderer     "/bin/bash -c 'sle..."   50 seconds ago      Up About a minute   0.0.0.0:9050->7050/tcp                             orderer2.example.com
4245900f68f8        hyperledger/fabric-orderer     "/bin/bash -c 'sle..."   About an hour ago   Up About an hour    0.0.0.0:7050->7050/tcp                             orderer0.example.com

Peer

在docker-compose-base.yaml文件中追加peer节点的配置:

peer-base:
    image: hyperledger/fabric-peer
    environment:
      - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
      - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=${COMPOSE_PROJECT_NAME}_byfn
      - CORE_LOGGING_LEVEL=DEBUG
      - CORE_PEER_TLS_ENABLED=${ENABLE_TLS}
      - CORE_PEER_ENDORSER_ENABLED=true
      - CORE_PEER_GOSSIP_USELEADERELECTION=true
      - CORE_PEER_GOSSIP_ORGLEADER=false
      - CORE_PEER_GOSSIP_SKIPHANDSHAKE=true
      - CORE_PEER_PROFILE_ENABLED=true
      - CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt
      - CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key
      - CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt
    working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
    command: bash -c 'sleep 20 && peer node start --peer-defaultchain=false'

  peer0.org1.example.com:
    hostname: peer0.org1.example.com
    container_name: peer0.org1.example.com
    extends:
      service: peer-base
    environment:
      - CORE_PEER_ID=peer0.org1.example.com
      - CORE_PEER_ADDRESS=peer0.org1.example.com:7051
      - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051
      - CORE_PEER_LOCALMSPID=Org1MSP
    volumes:
        - /var/run/:/host/var/run/
        - ../crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/etc/hyperledger/fabric/msp
        - ../crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls:/etc/hyperledger/fabric/tls
    ports:
      - 7051:7051
      - 7053:7053

  peer1.org1.example.com:
    container_name: peer1.org1.example.com
    extends:
      service: peer-base
    environment:
      - CORE_PEER_ID=peer1.org1.example.com
      - CORE_PEER_ADDRESS=peer1.org1.example.com:7051
      - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org1.example.com:7051
      - CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org1.example.com:7051
      - CORE_PEER_LOCALMSPID=Org1MSP
    volumes:
        - /var/run/:/host/var/run/
        - ../crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp:/etc/hyperledger/fabric/msp
        - ../crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls:/etc/hyperledger/fabric/tls

    ports:
      - 8051:7051
      - 8053:7053

  peer0.org2.example.com:
    container_name: peer0.org2.example.com
    extends:
      service: peer-base
    environment:
      - CORE_PEER_ID=peer0.org2.example.com
      - CORE_PEER_ADDRESS=peer0.org2.example.com:7051
      - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org2.example.com:7051
      - CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org2.example.com:7051
      - CORE_PEER_LOCALMSPID=Org2MSP
    volumes:
        - /var/run/:/host/var/run/
        - ../crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp:/etc/hyperledger/fabric/msp
        - ../crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls:/etc/hyperledger/fabric/tls
    ports:
      - 9051:7051
      - 9053:7053

  peer1.org2.example.com:
    container_name: peer1.org2.example.com
    extends:
      service: peer-base
    environment:
      - CORE_PEER_ID=peer1.org2.example.com
      - CORE_PEER_ADDRESS=peer1.org2.example.com:7051
      - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org2.example.com:7051
      - CORE_PEER_GOSSIP_BOOTSTRAP=peer1.org2.example.com:7051
      - CORE_PEER_LOCALMSPID=Org2MSP
    volumes:
        - /var/run/:/host/var/run/
        - ../crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp:/etc/hyperledger/fabric/msp
        - ../crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls:/etc/hyperledger/fabric/tls
    ports:
      - 10051:7051
      - 10053:7053

创建docker-compose-peer.yaml:

version: '2'

networks:
    - byfn
services:
  couchdb0:
    container_name: couchdb0
    image: hyperledger/fabric-couchdb
    ports:
      - "5984:5984"
    networks:
      - byfn

  peer0.org1.example.com:
    extends:
      file: docker-compose-base.yaml
      service: peer0.org1.example.com
    environment:
      - CORE_LEDGER_STATE_STATEDATABASE=CouchDB
      - CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=couchdb0:5984
    depends_on:
      - couchdb0
    networks:
      - byfn


  couchdb1:
    container_name: couchdb1
    image: hyperledger/fabric-couchdb
    ports:
      - "6984:5984"
    networks:
      - byfn

  peer1.org1.example.com:
    extends:
      file: docker-compose-base.yaml
      service: peer1.org1.example.com
    environment:
      - CORE_LEDGER_STATE_STATEDATABASE=CouchDB
      - CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=couchdb1:5984
    depends_on:
      - couchdb1
    networks:
      - byfn



  couchdb2:
    container_name: couchdb2
    image: hyperledger/fabric-couchdb
    ports:
      - "7984:5984"
    networks:
      - byfn

  peer0.org2.example.com:
    extends:
      file: docker-compose-base.yaml
      service: peer0.org2.example.com
    environment:
      - CORE_LEDGER_STATE_STATEDATABASE=CouchDB
      - CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=couchdb2:5984
    depends_on:
      - couchdb2
    networks:
      - byfn


  couchdb3:
    container_name: couchdb3
    image: hyperledger/fabric-couchdb
    ports:
      - "8984:5984"
    networks:
      - byfn

  peer1.org2.example.com:
    extends:
      file: docker-compose-base.yaml
      service: peer1.org2.example.com
    environment:
      - CORE_LEDGER_STATE_STATEDATABASE=CouchDB
      - CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=couchdb3:5984
    depends_on:
      - couchdb3
    networks:
      - byfn

启动Peer节点:

$ CHANNEL_NAME=$CHANNEL_NAME TIMEOUT=60 ENABLE_TLS=true docker-compose -f yaml/docker-compose-peer.yaml up -d
Creating couchdb3 ...
Creating couchdb1 ...
Creating couchdb0 ...
Creating couchdb2 ...
Creating couchdb3
Creating couchdb1
Creating couchdb2
Creating couchdb3 ... done
Creating peer1.org2.example.com ...
Creating couchdb1 ... done
Creating peer1.org1.example.com ...
Creating couchdb2 ... done
Creating couchdb0 ... done
Creating peer1.org1.example.com ... done
Creating peer0.org1.example.com ...
Creating peer0.org2.example.com ... done

查看容器状态:

$ docker ps -a
CONTAINER ID        IMAGE                          COMMAND                  CREATED                  STATUS              PORTS                                              NAMES
749acf8eebf8        hyperledger/fabric-peer        "bash -c 'sleep 20..."   45 minutes ago      Up About an hour    0.0.0.0:7051->7051/tcp, 0.0.0.0:7053->7053/tcp     peer0.org1.example.com
8689b9152000        hyperledger/fabric-peer        "bash -c 'sleep 20..."   45 minutes ago      Up 45 minutes       0.0.0.0:9051->7051/tcp, 0.0.0.0:9053->7053/tcp     peer0.org2.example.com
b16444eac623        hyperledger/fabric-peer        "bash -c 'sleep 20..."   45 minutes ago      Up About an hour    0.0.0.0:8051->7051/tcp, 0.0.0.0:8053->7053/tcp     peer1.org1.example.com
f29ac84f381d        hyperledger/fabric-peer        "bash -c 'sleep 20..."   45 minutes ago      Up About an hour    0.0.0.0:10051->7051/tcp, 0.0.0.0:10053->7053/tcp   peer1.org2.example.com

Cli节点

我们还需要创建一个Cli客户端容器节点,方便对区块链执行一些操作。
创建文件:docker-compose-cli.yaml:

version: '2'

networks:
  byfn:
services:
  cli:
    container_name: cli
    image: hyperledger/fabric-tools
    tty: true
    network_mode: host
    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_TLS_ENABLED=${ENABLE_TLS}
      - CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt
      - CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key
      - CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
      - CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected]/msp
    working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
    command: bash -c 'sleep 30000000000000000000000'
    volumes:
        - /var/run/:/host/var/run/
        - ../../chaincode/:/opt/gopath/src/github.com/chaincode
        - ../crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/
        - ../scripts:/opt/gopath/src/github.com/hyperledger/fabric/peer/scripts/
        - ../channel-artifacts:/opt/gopath/src/github.com/hyperledger/fabric/peer/channel-artifacts
    networks:
      - byfn

查看容器:

$ docker ps
CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS              PORTS                                              NAMES
a6e078efdbc8        hyperledger/fabric-orderer     "/bin/bash -c 'sle..."   50 seconds ago      Up About a minute   0.0.0.0:8050->7050/tcp                             orderer1.example.com
0d455f0d6062        hyperledger/fabric-orderer     "/bin/bash -c 'sle..."   50 seconds ago      Up About a minute   0.0.0.0:9050->7050/tcp                             orderer2.example.com
27f3688beec8        hyperledger/fabric-tools       "bash -c 'sleep 30..."   15 minutes ago      Up 16 minutes                                                          cli
749acf8eebf8        hyperledger/fabric-peer        "bash -c 'sleep 20..."   45 minutes ago      Up About an hour    0.0.0.0:7051->7051/tcp, 0.0.0.0:7053->7053/tcp     peer0.org1.example.com
8689b9152000        hyperledger/fabric-peer        "bash -c 'sleep 20..."   45 minutes ago      Up 45 minutes       0.0.0.0:9051->7051/tcp, 0.0.0.0:9053->7053/tcp     peer0.org2.example.com
b16444eac623        hyperledger/fabric-peer        "bash -c 'sleep 20..."   45 minutes ago      Up About an hour    0.0.0.0:8051->7051/tcp, 0.0.0.0:8053->7053/tcp     peer1.org1.example.com
f29ac84f381d        hyperledger/fabric-peer        "bash -c 'sleep 20..."   45 minutes ago      Up About an hour    0.0.0.0:10051->7051/tcp, 0.0.0.0:10053->7053/tcp   peer1.org2.example.com
32f849c44e0f        hyperledger/fabric-couchdb     "tini -- /docker-e..."   45 minutes ago      Up About an hour    4369/tcp, 9100/tcp, 0.0.0.0:6984->5984/tcp         couchdb1
02b770dfd4ed        hyperledger/fabric-couchdb     "tini -- /docker-e..."   45 minutes ago      Up About an hour    4369/tcp, 9100/tcp, 0.0.0.0:5984->5984/tcp         couchdb0
f0c72c40c793        hyperledger/fabric-couchdb     "tini -- /docker-e..."   45 minutes ago      Up About an hour    4369/tcp, 9100/tcp, 0.0.0.0:8984->5984/tcp         couchdb3
2eb63e7efa08        hyperledger/fabric-couchdb     "tini -- /docker-e..."   45 minutes ago      Up About an hour    4369/tcp, 9100/tcp, 0.0.0.0:7984->5984/tcp         couchdb2
4245900f68f8        hyperledger/fabric-orderer     "/bin/bash -c 'sle..."   About an hour ago   Up About an hour    0.0.0.0:7050->7050/tcp                             orderer0.example.com
faf06e00031a        hyperledger/fabric-ca          "sh -c 'fabric-ca-..."   About an hour ago   Up About an hour    0.0.0.0:8054->7054/tcp                             ca_peerOrg2
496e8e0a7df6        hyperledger/fabric-ca          "sh -c 'fabric-ca-..."   About an hour ago   Up About an hour    0.0.0.0:7054->7054/tcp                             ca_peerOrg1

总结

到此,我们已经成功启动了网络中的所有节点,下一章将会在这些节点中运行我们的区块链~

你可能感兴趣的:(Playground for Hyperledger - 启动网络)