1.4 도커에서 개발 환경 구축하기

이번에는 도커(Docker)로 EOS 개발 환경을 구성해 봅니다.

윈도에서 도커 설치하기

윈도 프로 에디션 이상을 사용하는 경우 다음 주소를 참고해 도커를 설치합니다. https://docs.docker.com/docker-for-windows/

설치 화면에서 데스크톱에 아이콘을 추가할 것인지, Windows 컨테이너 대신 리눅스 컨테이너를 사용할 것인지 묻습니다.

 < Docker 설치 화면 1 > 

이후 설치가 시작됩니다.

 < Docker 설치 화면 2 > 

 < Docker 설치 화면 3 > 

설치가 끝난 후 Close를 클릭해 설치를 마칩니다. 그러면 바탕화면에 도커 아이콘이 생깁니다.

 < 도커 아이콘 > 

Windows용 도커의 자세한 사용 방법에 대해서는 다음 사이트를 참조하면 됩니다.https://docs.docker.com/docker-for-windows/install/#where-to-go-next

도커를 설치하면 자원을 할당해야 합니다. EOS에서 Docker 환경에 요구하는 최소 메모리는 7GB입니다. 자세한 정보는https://github.com/EOSIO/eos/tree/master/Docker에서 확인할 수 있습니다.

윈도에서 도커를 실행 후 Setting으로 접근합니다.

 < Docker setting > 

Advanced 탭에서 최소 메모리인 7GB를 설정합니다.

 < Dokcer advanced 설정 화면 > 

이제 EOSIO를 내려받을 차례입니다. https://github.com/eosio/eos 웹 페이지에서 [Clone or download] 버튼을 누르고 ZIP 파일을 받습니다.

 < EOSIO Github 사이트 화면 > 

ZIP 파일을 원하는 위치에 압축을 풉니다.

 < .zip 파일 압축 해제 후, 폴더 화면 > 

여기서는 바탕화면의 docker_test 폴더 안에 압축을 해제했습니다.

윈도 홈 에디션 사용자는 다음 주소에서 Tool Box를 추가로 설치합니다.https://docs.docker.com/toolbox/toolbox_install_windows/

 < Dokcer Toolbox 설치 화면 1 > 

툴 박스와 함께 다양한 툴을 함께 설치할 수 있습니다. 깃(Git)을 아직 설치를 하지 않았다면 함께 설치합니다.

 < Dokcer Toolbox 설치 화면 2 > 

 < Dokcer Toolbox 설치 화면 3 > 

Install 버튼을 클릭하면 툴박스 설치가 시작됩니다.

 < Dokcer Toolbox 설치 화면 4 > 

설치가 끝나면 바탕화면에서 오라클 VM 버추얼박스(Oracle VM VirtualBox), 카이트메틱(Kitematic), 도커 퀵스타트 터미널(Docker Quickstart Terminal) 아이콘을 확인할 수 있습니다.

 < Oracle VM VirtualBox, Kitematic, docker Quickstart Terminal Icon 화면 > 

이제 메모리 환경을 설정해야 합니다. 오라클 VM 버추얼박스 실행합니다. default로 기본 가상 환경 머신이 생성되어 있을 것입니다. default 환경을 실행합니다.

 < Oracle VM VirtualBox 설정 화면 > 

가상머신이 실행 상태에서는 가상머신 시스템 설정을 바꿀 수 없습니다. 먼저 가상머신을 종료하고 시스템 전원을 끕니다.

 < Oracle VM VirtualBox 가상 머신 종료 화면 > 

도커를 설치하면 자원을 할당해야 합니다. EOS에 필요한 최소한의 메모리 크기는 7GB입니다. 가상머신의 설정에서 7GB 이상으로 메모리를 할당합니다

 < Oracle VM VirtualBox 설정 변경 > 

설정을 마쳤다면 default 가상머신을 다시 실행해 정상적으로 실행되는지 확인합니다.

 < Oracle VM VirtualBox 설정 변경 후 재시작 화면 > 

정상적으로 실행되었다면 가상머신을 종료하고 현재 상태 저장합니다.

 < Oracle VM VirtualBox 상태 저장 > 

그다음 도커 퀵스타트 터미널을 실행합니다.

 < Docker Quickstart Terminal 시작 화면 > 

```
                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/

docker is configured to use the default machine with IP 192.168.99.100
For help getting started, check out the docs at https://docs.docker.com
Start interactive shell
insan@DESKTOP-CHQAT23 MINGW64 /c/Program Files/Docker Toolbox

```

도커 설치 과정에서 깃을 추가로 설치하지 않았다면 다음 웹 페이지에서 깃을 내려받고 설치합니다.https://git-scm.com/download/win

깃이 설치되면 Git Bash 프로그램을 실행합니다. EOS 세팅을 하기 위한 위치에서 다음 명령어를 입력합니다.

```
$ git clone https://github.com/EOSIO/eos.git --recursive --depth 1

```

 < Git bash에서 Git 을 이용하여 EOS 설치 > 

```
insan@DESKTOP-CHQAT23 MINGW64 ~
$ git clone https://github.com/EOSIO/eos.git --recursive --depth 1
Cloning into 'eos'...
remote: Enumerating objects: 943, done.
remote: Counting objects: 100% (943/943), done.
remote: Compressing objects: 100% (810/810), done.
remote: Total 943 (delta 116), reused 419 (delta 40), pack-reused 0
Receiving objects: 100% (943/943), 17.91 MiB | 4.92 MiB/s, done.
Resolving deltas: 100% (116/116), done.
Submodule 'contracts/libc++/upstream' (https://github.com/EOSIO/libcxx.git) registered for path 'contracts/libc++/upstream'
Submodule 'contracts/musl/upstream' (https://github.com/EOSIO/musl.git) registered for path 'contracts/musl/upstream'
Submodule 'externals/binaryen' (https://github.com/EOSIO/binaryen) registered for path 'externals/binaryen'
Submodule 'externals/magic_get' (https://github.com/EOSIO/magic_get) registeredfor path 'externals/magic_get'
Submodule 'libraries/appbase' (https://github.com/eosio/appbase) registered forpath 'libraries/appbase'
Submodule 'libraries/chainbase' (https://github.com/eosio/chainbase) registeredfor path 'libraries/chainbase'
Submodule 'libraries/fc' (https://github.com/EOSIO/fc) registered for path 'libraries/fc'

```

윈도 프로 에디션에서는 셸 스크립트나 터미널에서, 홈 에디션에서는 툴 박스의 도커 터미널에서 내려받은 EOS 클론을 위치로 이동합니다.

 < Windows PowerShell에서의 디렉토리 이동 > 

```
PS C:\Users\Home\Desktop\docker_test\eos-master> cd docker
PS C:\Users\Home\Desktop\docker_test\eos-master\docker>

```

다음 명령어으로 도커를 빌드합니다.

```
> docker build . -t eosio/eos

```

 < PowerShell에서 Docker 빌드 진행중 화면 > 

도커 설치가 완료되면 다음과 같은 화면이 나타납니다.

```
Sending build context to Docker daemon  30.21kB
Step 1/16 : FROM eosio/builder as builder
latest: Pulling from eosio/builder
6b98dfc16071: Pull complete
4001a1209541: Pull complete
6319fc68c576: Pull complete
b24603670dc3: Pull complete
97f170c87c6f: Pull complete
989c07c6edff: Extractin 3.408MB/39.85MB
3cb5f57fd105: Downloading 10.18MB/332.4MB
17e8c5aa3340: Download complete
865a94241630: Waiting
78c0dba4c581: Waiting
80dfca640586: Waiting
e56cf35e4a67: Waiting
ec1eb8c6a441: Waiting

```

 < PowerShell에서 Docker 빌드 완료 화면 > 

```
Step 14/16 : RUN chmod +x /opt/eosio/bin/nodeosd.sh
 ---> Running in 793d69ff0b1f
Removing intermediate container 793d69ff0b1f
---> da32b783bb46
Step 15/16 : ENV LD_LIBRARY_PATH /usr/local/lib
 ---> Running in f40a1f2e2203
Removing intermediate container f40a1f2e2203
Step 16/16 : ENV PATH /opt/eosio/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
 ---> Running in c7186033f948
Removing intermediate container c7186033f948
---> d4d5d59e47c1
Successfully built d4d5d59e47c1
Successfully tagged eosio/eos:latest
……

```

macOS 환경에서 도커 설치하기

macOS 사용자는 다음 주소에서 도커를 설치합니다.https://docs.docker.com/docker-for-mac/
내려받은 docker.app 파일을 실행하면 설치가 진행됩니다.

 < Docker.app 실행 화면 > 

앱 설치 과정에서 macOS 비밀번호를 요구합니다. 다음 화면에서 OK를 클릭하고 사용자 비밀번호를 입력합니다.

 < Docker.app 비밀번호 요청 화면 > 

다음 화면이 나오면 정상적으로 설치된 것입니다.

 < Dokcer.app 설치 완료 화면 > 

macOS용 도커에 대해 더 깊이 알고 싶다면 다음 웹 페이지를 참조하기 바랍니다.
https://docs.docker.com/docker-for-mac/install/#install-and-run-docker-for-mac

아직 설정이 남았습니다. 이전 설치와 같이 EOS의 최소 요구사항에 맞춰 도커 리소스를 설정합니다.

 < Docker 환경 설정 > 

다음 명령어로 도커의 버전을 확인할 수 있습니다.

```
$ docker --version

```

이제 깃허브에서 EOS.IO를 내려받습니다. 명령어는 다음과 같습니다.

```
$ git clone https://github.com/EOSIO/eos.git --recursive --depth 1

```

eos/Docker 폴더에서 다음 명령을 입력하면 Docker 환경에서 EOS.IO가 빌드됩니다.

```
$ docker build . -t eosio/eos

```

 < docker 환경에 eosio 빌드 화면 > 

```
 ---> b5456c8533d9
Step 12/16 : COPY --from=builder /eos/Docker/nodeosd.sh /opt/eosio/bin/nodeosd.sh
 ---> Using cache
 ---> e9b1d361f853
Step 13/16 : ENV EOSIO_ROOT=/opt/eosio
 ---> Using cache
 ---> 24fe5bc5df26
Step 14/16 : RUN chmod +x /opt/eosio/bin/nodeosd.sh
 ---> Using cache
 ---> 96adc83d89af
Step 15/16 : ENV LD_LIBRARY_PATH /usr/local/lib
 ---> Using cache
 ---> ae888ada2d7b
Step 16/16 : ENV PATH /opt/eosio/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
 ---> Using cache
 ---> 4b25d0e03614
Successfully built 4b25d0e03614
Successfully tagged eosio/eos:latest

```

Prev | Next