본문 바로가기
개발 학습/블록체인

Docker로 노드 운영 (1) : Docker와 Geth 설치 및 세팅

by StelthPark 2022. 2. 19.

1. 도커와 게스란 무엇인가?

도커는 컨테이너 기반 오픈 소스 가상화 플랫폼으로 개발을 하다보면 회사정책에따라 서버환경, 개발환경이 계속 바뀌는데 이전에 쓰던 환경을 계속 쓸수 있도록 도와준다. 컨테이너 생성으로 분리된 환경에 설치하여 제거도 쉽다.

나는 도커안에 우분투 컨테이터를 생성하여 안에서 geth로 노드를 운영해볼것이다.

 

게스란 이더리움 스마트 계약을 실행할 수 있는 플랫폼입니다. go, c++, python 등 다양한 언어로 이더리움을 구동할 수 있는 클라이언트가 개발되고 있으며 현재 가장 많이 사용되는 클라이언트가 go 언어로 개발된 go-ethereum (geth)입니다.

 

2. 도커 설치

기본 OS로 우분투를 20.04를 사용하고 있으며 이전에 Docker를 설치한적있다면 이전버전을 제거한다.

$ sudo apt-get remove docker docker-engine docker.io containerd runc

우선 Docker 엔진을 설치해야한다. 그전에 docker 저장소를 설정해야한다. 아래 명령어들을 순서대로 입력한다.

$ sudo apt-get update

$ sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

Docker의 공식 GPG 키 추가

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Docker 엔진 설치

$ sudo apt-get update
 $ sudo apt-get install docker-ce docker-ce-cli containerd.io

Dokcer compose 설치

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Docker compose 권한 설정

$ sudo chmod +x /usr/local/bin/docker-compose

사용 설정

$ sudo usermod -aG docker $USER

위 순서대로 설치가 완료 됐다면 정상 작동중인지 아래 명령어로 테스트해본다.

sudo systemctl status docker <= 를 통해 Active에 active가 나오면 도커가 돌고 있는것이다.

 

3. 컨테이너 세팅

도커에서 우분투 컨테이너로 노드를 운용할 것이기 때문에 우분투 이미지를 받아온다. vmware 같은 가상머신에서 마치 우분투를 설치하여 작동하는것과 거의 비슷한 느낌이다..

 

   $ docker search ubuntu
   $ docker pull ubuntu
    $ docker image ls

 

정상적으로 받아 왔다면 ls에서 위 처럼 볼 수 있다 hello-world는 내가 임시로 만든 것이므로 무시하자!

이후 con_ubuntu라는 컨테이너를 테스트 컨테이너를 생성한뒤 시작한다.

    $ docker create -it --name con_ubuntu ubuntu
     $ docker start con_ubuntu
      $ docker ps

 

마지막 ps를 통해 실행중인 컨테이너 목록을 확인하자. 나는 16시간전에 컨테이너를 만들어서 Created 시간이 아래처럼 나온다.!

 

이제 우리의 터미널에 실행중인 컨테이너를 연결하자

   $ docker attach con_ubuntu

컨테이너에 연결되었다. 이후 컨테이너를 세팅해야한다. 우선 타임존을 선택해서 자신의 위치에 맞게 숫자를 입력해야한다. 우리는 아시아의 서울에 있으므로 6을 입력 엔터, 69를 입력 엔터 한다.

$ apt update -y && apt install -y software-properties-common

 

타임존 설정이 완료되면 geth를 설치하고 이더리움 레포지토리를 클론한다.

add-apt-repository ppa:ethereum/ethereum

   $ apt-get install vim -y
   $ apt update -y && apt install geth
   $ apt-get install git -y
   $ cd ~
   $ git clone https://github.com/ethereum/go-ethereum
   $ apt-get install -y build-essential golang

 

정상적으로 설치가 잘되었는지 geth의 버전을 확인한다.

  $ geth version

 

Ubuntu docker engine install 참고 : https://docs.docker.com/engine/install/ubuntu/

docker compose install 참고 : https://docs.docker.com/compose/install/

 

댓글