[Blockchain] Docker에 Ethereum Wallet을 설치하기​ #1

docker+ethereum.jpg


Ethereum Wallet을 설치할 수 있는 다양한 패키지가 존재한다.

GUI Wallet도 있고 Client기능만 있는 Mist Browser도 있다.
Ethereum v0.10.0 기준으로 Windows, Linux, Macos를 지원하고 있으며 Source 코드도 제공한다.

또한 다양한 언어로 개발된 Ethereum도 있다.​

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 IDIMAGE 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
$

H2
H3
H4
3 columns
2 columns
1 column
Join the conversation now