국내에서는 아직도 익숙하지 않은 기술이지만.. 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 실행
최초 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 커맨드를 활용하는 것을 테스트 해 보겠다.