본문으로 바로가기

Docker로 EOS Node 쉽게 실행하기

category Blockchain&Crypto/EOS 2018. 4. 17. 01:40
반응형

국내에서는 아직도 익숙하지 않은 기술이지만.. docker 기반의 컨테이너는 이미 전 세계적으로 거의 모든 개발사에서 쓰이고 있다. 특히나 오픈소스 소프트웨어에 있어 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


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

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



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


리눅스 환경에서 curl http://127.0.0.1:8888/v1/chain/get_info 명령어를 통해 chain 정보를 얻어올 수 있다.


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


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


반응형

 Other Contents