Ethereum Wallet을 설치할 수 있는 다양한 패키지가 존재한다.
GUI Wallet도 있고 Client기능만 있는 Mist Browser도 있다.
Ethereum v0.10.0 기준으로 Windows, Linux, Macos를 지원하고 있으며 Source 코드도 제공한다.
또한 다양한 언어로 개발된 Ethereum도 있다.
- Go: https://github.com/ethereum/go-ethereum
- Java: https://github.com/ethereum/ethereumj
- C++: https://github.com/ethereum/cpp-ethereum
- Python: https://github.com/ethereum/pyethereum
Ethereum을 이용해서 서비스를 구축할 때에 GUI버전보다는 CLI가 편리한 점이 있다.
또한 개발환경과 배포후 서비스 환경이 다른 경우보다 같을 때가 유리할 수 밖에 없다.
Docker를 이용하면 여러가지 OS에서도 같은 환경으로 개발 및 배포할 수가 있고, 다른 버전의 Linux더라도 동일하게 개발 및 배포할 수가 있다.
또한 매번 설치할때마다 불필요하게 동일한 작업을 할 필요가 없고, 개발 PC에 여러가지 패키지가 설치되면서 지저분해지는 것을 방지할 수가 있다.
여기서는 golang으로 구현된 Go Ethereum을 설치한다. Go Ethereum도 Linux, macOS, Windows OS를 지원하지만 Docker를 이용하여 Ubuntu 16.04 Container에 설치한다.
Docker 설치
Docker Community Edition 은 다양한 플랫폼 설치 파일이 있다.
자신의 환경에 맞는 설치 버전을 다운받아서 실행한다.
설치하고 나면 docker
명령어를 사용할 수가 있다. 정상적으로 실행되는지 확인한다.
$ docker version
Client:
Version: 18.03.0-ce
API version: 1.37
Go version: go1.9.4
Git commit: 0520e24
Built: Wed Mar 21 23:06:22 2018
OS/Arch: darwin/amd64
Experimental: false
Orchestrator: swarm
Server:
Engine:
Version: 18.03.0-ce
API version: 1.37 (minimum version 1.12)
Go version: go1.9.4
Git commit: 0520e24
Built: Wed Mar 21 23:14:32 2018
OS/Arch: linux/amd64
Experimental: true
Docker 명령에 대해서 더 자세한 내용은 Docker Documentation에서 확인 할 수가 있다.
Ubuntu Container 실행하기
Docker를 이용한면 간단한 명령으로 원하는 OS를 바로 실행할 수가 있다.
DockerHub에 저장되어 있는 이미지를 다운 받아서 컨테이너 내에 접속해보자
$ docker run -it ubuntu:16.04 /bin/bash
Unable to find image 'ubuntu:16.04' locally
16.04: Pulling from library/ubuntu
d3938036b19c: Pull complete
a9b30c108bda: Pull complete
67de21feec18: Pull complete
817da545be2b: Pull complete
d967c497ce23: Pull complete
Digest: sha256:9ee3b83bcaa383e5e3b657f042f4034c92cdd50c03f73166c145c9ceaea9ba7c
Status: Downloaded newer image for ubuntu:16.04
root@a7835c7d241c:/#
ubuntu 16.04
이미지를 다운로드 하고/bin/bash
를 실행한 후 #
프롬프트가 떨어졌다.
apt-get
을 사용할 수 있도록 업데이트 한다.
# apt-get update
# apt-get install -y software-properties-common
# apt-get update
이제 기본적인 작업은 끝났다.
geth (Go-Ethereum) 설치
apt-get
으로 ethereum을 설치하기 위해서 먼저 apt repository에 ethereum을 추가하고 실치한다.
# add-apt-repository -y ppa:ethereum/ethereum
# apt-get update
# apt-get install -y ethereum
설치가 완료 되었다.
이제 정상적으로 동작하는지 확인하자.
# geth version
Geth
Version: 1.8.2-stable
Git Commit: b8b9f7f4476a30a0aaf6077daade6ae77f969960
Architecture: amd64
Protocol Versions: [63 62]
Network Id: 1
Go Version: go1.9.4
Operating System: linux
GOPATH=
GOROOT=/usr/lib/go-1.9
Docker에서 직접 Ethereum을 설치하는 것이 옳은가?
틀리지는 않다.
Docker에 apt-get
이나 yum
으로 설치하는 것은 일반적인 방법이다.
하지만 Go-Ethereum이 이미 설치되어 있는 이미지가 Docker Hub에 있다.
공식 golang ethereum 이미지는 좀 더 최적화 되어 있고 컨테이너 실행시 자동으로 geth가 실행되어서 다른 추가 작업을 할 필요가 없어서 편리하다.
Docker Image 삭제하기
다음 회에는 Docker Hub 이미지를 이용해서 Ethereum을 실행하고 Ethereum Wallet에 Account를 만들고 테스트 할 예정이다.
이미 만들어놓은 Ubuntu Container를 이용해서 Ethereum을 실행해도 아무런 문제가 없다.
하지만 Go Ethereum Docker Image를 이용하려면 지금 만든 Ubuntu Container는 불필요하므로 삭제하는게 좋다.
먼저 Container에서 빠져 나온다.
# exit
exit
$
Container를 빠져나오면 개인 PC의 프롬프트로 빠져나온다.
실행중인 container와 image를 확인하고 CONTAINER ID
와 IMAGE ID
입력하여 삭제한다.
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a7835c7d241c ubuntu:16.04 "/bin/bash" About an hour ago Exited (0) About a minute ago hungry_roentgen
$ docker rm a7835c7d241c
a7835c7d241c
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 16.04 c9d990395902 3 days ago 113MB
$ docker rmi c9d990395902
Untagged: ubuntu:16.04
Untagged: ubuntu@sha256:9ee3b83bcaa383e5e3b657f042f4034c92cdd50c03f73166c145c9ceaea9ba7c
Deleted: sha256:c9d990395902a9e219684af847a63d793ccf72cf2aadeece1b576566c5662400
Deleted: sha256:675880accb90897aec8fff98df1e3bb3b278bbe186120fa258cc48992bec217a
Deleted: sha256:0cf6486652a8bdb930a6f03e4c0a07cc1965374b70a0db54a3f1f8e40c3355ab
Deleted: sha256:bc0aa35c578d07f133f6e63d302f187c97a877eb3e51fc1de2f33cc5e24a7c7c
Deleted: sha256:44de8286205bd1bbd03542ed198614162f155cbb6738617411a8d2572559853b
Deleted: sha256:fccbfa2912f0cd6b9d13f91f288f112a2b825f3f758a4443aacb45bfc108cc74
$