앞서 cryptogen 과 configtxgen 를 활용해, 'fabric 블록체인 네크워크' 에 꼭! 필요한~ 각종파일을 생성 하였습니다.

그럼 이제 fabric에서 각 역할의 node를 docker으로 띄워서, 실질적인 '블록체인 네크워크' 구축 할 수 있습니다.

  • docker-compose
    • 우선 docker-compose으로 각종 node를 한번에 쉽게 띄워 볼 수 있습니다.
    • 사용법은 아래와 같습니다.
      • docker-compose -f docker-compose-???.yaml up -d 2>&1
    • (참고1)
      • docker logs 6f70cd0b2a2b
      • docker exec -it orderer.fabtest13.com bash
      • docker exec -it peer0.samsung1.fabtest13.com bash
      • http://aaa.bbb.ccc.ddd:5984/_utils/
    • (참고2)
      • docker network create net_basic
      • docker network ls
    • (참고3)
      • docker-compose -f docker-compose-???.yml down --volumes --remove-orphans
      • docker kill $(docker ps -q)
      • docker rm $(docker ps -aq)
      • docker volume prune
      • docker rmi $(docker images dev-* -q)
    • 저는 https://github.com/bysssss/fabric13 의 docker-compose-???.yaml 을 기반으로 실습을 진행 했습니다.
      • 핵심은 orderer, peer, (couchdb) 를 잘 띄우는것 입니다.
      • 부가적으로 ca, cli 도 잘 띄워야 합니다.
      • networks
        • // TODO : 정확히
      • orderer
        • orderer 도메인 기반으로 적절히 작성합니다.
        • environment:
          • ORDERER_GENERAL_LISTENADDRESS= ???
          • ORDERER_GENERAL_GENESISFILE= 생성한 /configtx 의 genesis.block 경로
          • ORDERER_GENERAL_LOCALMSPID= configtx.yaml 에서 작성한 ID값
          • ORDERER_GENERAL_LOCALMSPDIR= 생성한 /crypto-config 의 /orderers/.../msp 경로
        • command: orderer (orderer-node를 띄움)
      • peer
        • peer 도메인 기반으로 적절히 작성합니다.
        • environment:
          • CORE_VM_ENDPOINT= ??? 도커 내부통신 ???
          • CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE= ??? 도커 내부망 ???
          • CORE_PEER_ADDRESS= ??? 도커에서 사용할 Address ???
          • CORE_PEER_LOCALMSPID= configtx.yaml 에 작성한 ID값
          • CORE_PEER_MSPCONFIGPATH= 생성한 /crypto-config 의 /peers/.../msp 경로
          • CORE_PEER_GOSSIP_ORGLEADER= (가십 프로토콜) Org Leader ???
          • CORE_PEER_GOSSIP_USELEADERELECTION= (가십 프로토콜) 자동리더선출
          • CORE_PEER_GOSSIP_BOOTSTRAP= (가십 프로토콜) ???
          • CORE_LEDGER_STATE_STATEDATABASE= Ledger으로 CouchDB사용시 셋팅합니다.
        • command: peer node star (peer-node를 띄움)
      • couchdb
        • peer의 ledger로 couchdb를 사용할 경우, 당연 띄워야 겟죠?
        • environment:
          • COUCHDB_USER= 옵셔널 입니다.
          • COUCHDB_PASSWORD= 옵셔널 입니다.
      • ca
        • ...
      • cli
        • 우선, orderer가 genesis.block를 물고 시작을 하게되는것 볼 수 있습니다.
        • (그럼으로 genesis.block를 통해, 참여하는 각 organization의 'channel MSP'가 정해진것 입니다.)
        • (왜냐하면, configtx.yaml에 정의한 각 organization의 ID-Name-MSP으로 genesis.block을 만듬)
        • 그리고 orderer는 ORDERER_GENERAL_LOCALMSPDIR으로 'local MSP'를 지정한것을 볼 수 있습니다.
        • 그리고 peer는 CORE_PEER_MSPCONFIGPATH으로 'local MSP'를 지정한것을 볼 수 있습니다.
        • (즉, 'channel&local MSP' 기반으로 orderer 및 peer 는 'organization' 과 'digital identity' 를 갖춤)
        • orderer 및 peer 을 띄웠으니, 이제 fabric에서 제공하는 커맨드로 원하는 작업을 하면 됩니다.
        • 그런데, 여러가지 커맨드를 편하고 깔끔하게 사용은~ 가상환경에서 하면 좋겠죠?
        • 그래서 fabric-tools 도커이미지를 띄워서, 작업하는것이 바람직 합니다.
        • (peer-node와 통신이 가능한 환경에서, 특정 peer-node를 환경변수값으로 지정해~ 커맨드 함)
        • environment:
          • CORE_VM_ENDPOINT= ???
          • CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE= ???
          • CORE_PEER_ADDRESS= 커맨드할 peer-node의 주소
          • CORE_PEER_LOCALMSPID= 커맨드할 peer-node의 'local MSP ID'
          • CORE_PEER_MSPCONFIGPATH= 생성한 /crypto-config 의 /users/Admin.../msp 경로
            • core_peer_mspconfigpath 값이 주목할만하다.
            • users의 Admin을 사용했다. (/peers/.../msp나 /users/User.../msp는 커맨드 안됨!)
            • 즉, 특정 organization의 peer-node에게는 해당 Admin권한으로만 커맨드를 할 수 있는것!!!
        • command: /bin/bash (커맨드를 날릴 bash셸 띄움)
    • docker ps 커맨드를 통해, 아래와 같은 확인을 할수있습니다.
      • // TODO : 각 컨테이너 설명해충
  • docker
    • 물론, docker-compose를 활용하지 않고~ 단순히 docker으로 한땀한땀 곡씹으며 띄워 볼 수 도있습니다.
    • 사용법은 아래와 같습니다.
      • ...

-끝-

'hyperledger > fabric.실습' 카테고리의 다른 글

fabric 실습3 : channel & chaincode  (0) 2019.05.12
fabric 실습1 : cryptogen 과 configtxgen  (0) 2019.05.10
fabric 실습0 : 준비  (0) 2019.05.09

+ Recent posts