docker 포트 포워딩 및 geth node 연결하기

else·2023년 3월 2일
0

블록체인

목록 보기
4/4

컨테이너 생성하기

  • 생성시 포트를 열어주는 옵션을 준다

    • docker run -d -p 8080:80 --name node1 ubuntu

    • host의 8080포트를 도커의 80포트로 포워딩 하겠다 라는 의미

    • 테스트를 위해 2개 이상 생성한다.

geth 실행하기

  • 두 노드를 실행시킬 때 같은 genesis.json 파일을 써야한다.

  • 내가 사용한 genesis 세팅 ( private 네트워크 )

{
	"config": {
		"chainId": 333,
    	"homesteadBlock": 0,
    	"eip150Block": 0,
    	"eip155Block": 0,
    	"eip158Block": 0,
	},
	"alloc": {},
	"coinbase": "0x0000000000000000000000000000000000000000",
	"difficulty": "0x20000",
	"gasLimit": "0x2fefd8",
	"nonce": "0x0000000000000042",
	"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
	"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
	"timestamp": "0x00"
}                                                                                                            ~                                                                                    
  • 모두 임의의 값이기에 의미는 없다.

  • geth --networkid 333 --nodiscover --port 30303 --datadir node1 -allow-insecure-unlock --authrpc.port "80" --http --http.addr 172.17.0.2 --http.port 80 --http.corsdomain "*" --http.api="db,eth,net,web3,personal,web3,miner,admin" --nat=extip:172.17.0.2 --miner.threads 1

  • 여기서 nat=extip 옵션은 enode의 주소를 바꿔준다.

    • 이 옵션을 주지 않으면 127.0.0.1 ( 로컬호스트 ) 로 잡혀 접근이 불가능하다.
  • ip 허용을 의미하는 corsdomain 은 와일드 카드 옵션을 줘서 모두 허용으로 해줬다.

노드 연결하기

  • 우선 연결 당할 노드의 enode 주소를 확인한다. ( node1 )

    • admin.nodeInfo.enode

      • "enode://f8287e7268fad98464a0b52b4c01269845fb9aecdbb996c993e2a4978117495760c151d37575e92e427a89da47cae6f8e2b67dad51af09eec8c1550cffa15dbb@172.17.0.2:30303?discport=0"
    • 연결할 노드에 addPeer로 연결한다. ( node2 )

      • admin.addPeer("enode://f8287e7268fad98464a0b52b4c01269845fb9aecdbb996c993e2a4978117495760c151d37575e92e427a89da47cae6f8e2b67dad51af09eec8c1550cffa15dbb@172.17.0.2:30303?discport=0")
    • 연결이 됐는지 확인한다.

      • admin.peers

      • 참고로 길이만 맞으면 전부 true로 뜨니 반드시 확인해주자

profile
피아노 -> 개발자

0개의 댓글