이번에는 도커(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 사용자는 다음 주소에서 도커를 설치합니다.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 ```