생성시 포트를 열어주는 옵션을 준다
docker run -d -p 8080:80 --name node1 ubuntu
host의 8080포트를 도커의 80포트로 포워딩 하겠다 라는 의미
테스트를 위해 2개 이상 생성한다.
두 노드를 실행시킬 때 같은 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의 주소를 바꿔준다.
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로 뜨니 반드시 확인해주자