Profile
LeafCat

2018.04.17

Docker로 EOS Node 쉽게 실행하기

Views 1111 Votes 8

 

본인 블로그에 포스팅한 내용을 가져온 내용이라 "~다." 체로 작성 되었음을 양해 부탁드립니다 :)

 

국내에서는 아직도 익숙하지 않은 기술이지만.. docker 기반의 컨테이너는 이미 전 세계적으로 거의 모든 개발사에서 쓰이고 있다. 특히나 오픈소스 SW에 있어서 github에 올라온 소스코드와 docker hub에 Push한 이미지는 기본 중에 기본이다.

이오스는 block one에서 개발하는 오픈소스이다. 역시나 Docker 컨테이너 기반으로 동장할 수 있도록 잘 구성 되어 있으며, 별도로 깃헙에 Run in docker 가이드도 제공한다.

 

eos.io git hub는 eos.io nodeos와 지갑인 keosd 컨테이너를 docker-compose로 묶어 함께 실행할 수 있도록 가이드 하고 있다.

우선 nodeos만 떼어서 별도로 구동해 보았다. docker를 사용하면 누구나 손쉽게 이오스를 가상화 컨테이너로 구동할 수 있다.

 


※ 참고

Docker 개념과 Architecture 정리 : http://www.leafcats.com/146

가상머신과 도커 : http://www.leafcats.com/152


 

1. 준비물

 

- 최소 8GB 이상의 RAM

- Docker 17.05 version 이상

( 리눅스에 docker 설치 : http://www.leafcats.com/153 )

window에서도 다양한 방법으로 docker를 사용할 수 있다. 가장 쉽게는 window용 docker를 설치해서 사용해도 될것 같지만, VMware를 사용해 8GB RAM Ubuntu VM을 구동해서 사용했다.

 

 

2. git에서 eos 소스 받아오기

 

$ git clone https://github.com/EOSIO/eos.git --recursive

 

3. Dockerfile이 있는 경로로 이동해 docker build 실행

 

$ cd eos/Docker

$ docker build . -t eosio/eos

 

4. Volume 디렉토리 생성(선택)

기본적으로 docker container는 컨테이너가 내려가면 데이터가 사라진다. 노드 데이터의 보존을 위해 Host 경로에 디렉토리 하나를 생성하고 이를 Volume으로 물고 컨테이너를 기동할 것이다.

$ mkdir /nodeos-data

 

5. config.ini 수정(선택)

 

$ vi config.ini

config.ini 파일을 수정해 eos node 구성에 필요한 각종 설정들을 변경할 수 있다.

config.ini 파일을 수정했으면, volume을 물릴 디렉토리 경로에 해당 config.ini 파일을 복사해 놓자.

우선은 별도 수정 없이 디폴트 설정대로 기동하자.

 

6. container 실행

 

$ docker run --name nodeos -v /nodeos-data:/opt/eosio/bin/data-dir -p 8888:8888 -p 9876:9876 -t eosio/eos nodeosd.sh arg1 arg2

 

eos_docker2.JPG

 

최초 New Chain 기동에 별도의 genesis.json 파일을 지정하지 않았기 때문에 구동하면서 default genesis file을 생성한다.

실제 EOS 메인넷의 genesis 순간에 쓰일 genesis.json에 포함된다는게 얼마나 큰 의미인지 세삼 느낀다.

 

eos_docker3.JPG

 

새로운 EOS New Chain이 구동 완료되었고 내 스스로가 BP가 되어 블록을 생성하기 시작했다.

순식간에 내 EOS Local Chain 런칭에 성공했다 :)

 

http://[ip addr]:8888/v1/chain/get_info 호출을 통해 chain 정보를 얻어올 수 있다.

 

docker 컨테이너를 통해 node를 기동하고, swarm이나 kubernetes와 같은 도구를 사용해 오케스트레이션 환경을 구성하면, 기본적으로 손쉬운 scale in/out이 가능하다. 더해서 서버 환경과 부하 상황에 따라 유동적으로 자원을 관리할 수 있을 뿐더러 장애 상황에도 여유로운 대응이 가능할 것이다. 

 

다음번에는 docker-compose를 사용해 eos node와 지갑을 연결해 함께 구동하는 것을 해보고, cleos 커맨드를 활용하는 것을 테스트 해 보겠다.

 

※ 출처 : 개인 블로그

Profile
5
Lv

4개의 Comment

Profile
서리
2018.04.17
정말 편하고 쉽게 잘 적어주셨네요. 감사드립니다. ^^
Profile
포르샤
2018.05.10

감사합니다. 스팀잇에서 쉘로 설치하는거 따라하다가 중간에 자꾸 놓쳤는데, docker 로 따라하니까 많이 쉽네요!

Profile
포르샤
2018.05.10

아... 이거 끄면 안되는건가요?? 끄면 다시 실행안되는줄알고 실행하려했는데...

에러뜨길래 /nodeos-data 디렉토리 지워버리고 다시 하려니까 에러나버리네요 후덜덜...

돌리는방법 몰라서 포맷하고 다시하는중이에요ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ ㅠㅠ

Profile
LeafCat
2018.05.11

@포르샤

OS를 끄시면 실행한 docker 컨테이너는 stop 상태로 변경됩니다. 처음부터 다시 실행하면 이미 stop상태인 컨테이너가 있으니까 에러가 나구요.

그 경우에는 docker ps -a 를 입력하시면 stop 상태인 컨테이너가 보일거에요.

그걸 다시 docker start [container ID] 해서 start 해주면 됩니다 :)

Profile
No. Subject Author Date Views
28 EOS.IO 질문 재식 2018.09.04 92
27 EOSIO DEEP DIVE 페이스북 그룹 소개 smarteasy 2018.08.21 70
26 EOSJS 시작하기 ogaeng 2018.08.01 273
25 테스트넷(정글넷) 에서 account 생성할때 램이 부족하다고 오류가 뜹니다. 1 카이쿵 2018.07.17 340
24 EOS 1.0.5 테스트 노드 계정 생성 에러 3 kai 2018.06.20 444
23 메인넷 연결을 위한 EOS seed list, config.ini, genesis.json 정보 공유 드립니다. 1 팔오사이 2018.06.11 621
22 메인넷의 HTTP API 접근 방법 공유 드립니다. 1 팔오사이 2018.06.11 718
21 Dapp 개발 입문을 해보고 싶습니다. 2 프라다 2018.06.09 581
20 Dapp 과 Block 과의 관계에 대한 질문요. 2 어카우 2018.05.23 296
19 제2회 EOS 개발자 밋업을 개최합니다. 10 profile eric 2018.05.21 478
18 eos 소스 분석 모임을 만들고 싶습니다 이더킬러 2018.05.18 255
17 EOS Commander 가 dawn4.0 지원하도록 업데이트되었습니다. 3 profile eric 2018.05.17 305
16 EOS Dapp을 개발해 보고 싶어요. 2 카이쿵 2018.05.12 1165
15 BigInteger library for EOSIO profile eric 2018.05.02 290
14 JAVA/안드로이드 환경에서 EOS dApp/지갑 개발 4 profile eric 2018.05.02 1088
Docker로 EOS Node 쉽게 실행하기 4 profile LeafCat 2018.04.17 1111
12 cleos wallet create error 2 profile veramonte 2018.04.10 464
11 EOS Dawn 3를 설치하면서... 4 profile 변견 2018.04.09 824
10 #1. EOS.IO 스마트컨트랙트 개발을 위한 가상 머신 설치하기 by nsjames 1 profile 서리 2018.04.09 1145
9 EOS Source를 분석하는 모임을 만들고자 합니다. 10 profile 변견 2018.04.08 543