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/Admin@org1.example.com/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

总结

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,451评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,172评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,782评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,709评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,733评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,578评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,320评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,241评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,686评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,878评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,992评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,715评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,336评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,912评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,040评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,173评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,947评论 2 355

推荐阅读更多精彩内容