개발환경 구축하기(windows -> Docker)
이번 시간에는 도커(Docker)를 이용한 Tezos 개발환경 구축을 알아보겠습니다. 먼저 도커란 컨테이너 기반의 오픈소스 가상화 플랫폼입니다. 다양한 프로그램과 실행환경들을 컨테이너로 추상화하고 동일한 인터페이스를 제공해줌으로써 프로그램의 배포 및 관리를 단순하게 해주는 매우 편리한 프로그램입니다. 구글은 모든 서비스를 컨테이너로 동작하고 매주 20억 개의 컨테이너를 구동 하고 있다고 합니다.
먼저 도커를 설치해보겠습니다. 도커 홈페이지(https://www.docker.com/) 에 들어가 Get Started를 선택해줍니다.
Download for Windows를 클릭해줍니다.
다운로드를 하려면 회원가입 후 로그인을 해주어야 하기에 회원가입을 하고 다시 와주겠습니다.
로그인을 하면 Get Docker 버튼이 생기는 것을 볼 수 있습니다. 클릭해주겠습니다.
다운로드 받은 귀여운 고래 파일을 실행해줍니다.
Tezos는 리눅스나 MacOS 환경에서 실행되기 때문에 밑의 체크박스는 해제해주겠습니다. OK를 클릭하여 다음 화면으로 넘어갑니다.
바로 설치가 진행됩니다. 설치가 다 되기를 기다려줍니다.
설치가 완료되면 [Close and log out] 을 클릭하여 설치를 완료해줍니다.
바탕화면에 Docker Desktop 아이콘이 생긴 걸 확인할 수 있습니다.
처음 도커를 실행하면 다음과 같은 창이 뜨게 됩니다. 윈도우에서는 Hyper-V 기능을 활성화 하여야 가상환경 사용이 가능하기 때문에 Ok 버튼을 클릭해주겠습니다.
우측 하단에 이런 작은 창이 뜨게 됩니다. 아이디와 비밀번호를 입력하여 로그인 해주겠습니다.
로그인 후 트레이 아이콘을 클릭한 후 Kitematic 메뉴를 클릭해줍니다.
Kitematic 파일을 다운로드 받고 압축을 풀은 후 사진처럼 [C:\Program Files\Docker] 에 Kitematic 폴더를 옮겨줍니다.
여기까지 완료하셨다면 다시 트레이 아이콘을 클릭한 후 Kitematic 메뉴를 클릭해줍니다. 아까와는 달리
Kitematic이 제대로 실행되는 것을 확인할 수 있습니다.
로그인을 해주면 마켓처럼 이미지들이 올라와있는 화면을 확인할 수 있습니다. 자신이 원하는 환경을 쉽게 다운로드 받아 바로 가상환경으로 사용해줄 수 있는 아주 편리한 시스템입니다.
좌측 하단의 DOCKER CLI 를 선택하여 Docker 설치가 정상적으로 되었는지 테스트를 해보겠습니다.
실행되는 PowerShell 을 확인하고 간단한 도커 명령어 ( docker images, docker search mysql ) 를 실행하여 정상적으로 설치되었음을 확인합니다.
이제 Power Shell 을 종료하고 우분투 이미지를 받으러 가보겠습니다. 검색창에 ubuntu를 입력해주고
CREATE 버튼을 클릭하여 이미지를 다운받아줍니다.
다운로드가 완료되면 다음과 같은 화면이 나오게 되며, EXEC 버튼을 클릭하여 가상환경을 실행해줍니다.
EXEC으로 Ubuntu 를 Windows PowerShell에서 실행한 화면입니다. 신기하죠?
다음은 vm ware에서 설치를 진행할 때와 같은 코드를 진행해주시면 됩니다. 마찬가지로 자세한 설명 없이 설치를 진행하고 싶으신 분들은 아래 코드를 그대로 순서대로 진행해주시면 되겠습니다. 한가지 다른 점은 sudo를 입력하지 않아도 된다는 것입니다.
apt-get update
apt-get upgrade
reboot
apt install -y rsync git m4 build-essential patch unzip bubblewrap wget
wget https://github.com/ocaml/opam/releases/download/2.0.1/opam-2.0.1-x86_64-linux
cp opam-2.0.1-x86_64-linux /usr/local/bin/opam
chmod a+x /usr/local/bin/opam
git clone https://gitlab.com/tezos/tezos.git
cd tezos
git checkout alphanet
opam init --bare
apt install -y libev-dev libhidapi-dev libgmp-dev pkg-config
make build-deps
eval $(opam env)
make
export PATH=~/tezos:$PATH
source ./src/bin_client/bash-completion.sh
export TEZOS_CLIENT_UNSAFE_DISABLE_DISCLAIMER=Y
그러면 자세하게 한 줄 씩 코드를 진행해보겠습니다. sudo apt-get update 를 입력하여 사용 가능한 패키지들과 그 버전들의 리스트를 업데이트 해줍니다. 실제 패키지 버전을 업그레이드하는 것이 아니라, 최신 버전 패키지가 있는지 확인하고 우분투 사용자에게 알려주는 용도입니다.
update가 완료되면 sudo apt-get upgrade 를 통해 우분투에 있는 패키지들을 실제 최신 버전으로 업그레이드 해줍니다. update와 upgrade 의 차이를 아시겠나요? update는 최신 버전 패키지를 확인, upgrade는 update로 확인한 패키지들을 실제 최신 버전으로 설치해주는 차이가 있습니다.
sudo apt install -y rsync git m4 build-essential patch unzip bubblewrap wget
를 통해 테조스 설치에 필요한 패키지들을 받아줍니다.
wget https://github.com/ocaml/opam/releases/download/2.0.1/opam-2.0.1-x86_64-linux
를 통해 깃허브 서버로 부터 opam 설치파일을 받아주고
cp opam-2.0.1-x86_64-linux /usr/local/bin/opam
를 통해 bin/opam 디렉터리에 설치한 파일을 옮겨주면 됩니다.
chmod a+x /usr/local/bin/opam
를 통해 모든 사용자(a)의 실행(x) 권한을 추가(+)하여 줍니다.
git clone https://gitlab.com/tezos/tezos.git
을 통해 테조스의 깃허브 저장소에서 파일들을 가져와줍니다.
cd tezos 를 통해 테조스 폴더로 이동한 후에
git checkout alphanet 를 통해 alphanet이라는 브랜치를 사용하겠다고 지정해줍니다.. 깃을 사용해보셨다면 이해가 쉬우시겠지만, 처음 사용하신다면 새로운 방향(alphanet)으로 나아가겠다고 명령을 해준다고 이해해주시면 되겠습니다!
opam init –bare 를 통해 opam state를 실행해줍니다. –bare 옵션은 컴파일러 스위치는 아직 실행하지 않겠다는 것을 의미합니다. 중간에 묻는 것이 나온다면 우선은 n 을 입력하고 넘어가 주세요. 나중에 따로 수정이 가능합니다. 처음 질문은 opam에게 profile의 수정 가능 권한을 줄 지를, 두번째 질문은 opam의 초기 스크립트에 hook 이라는 것을 설정할 지를 묻는 것입니다. hook은 shell이 opam 환경과 동기화가 이뤄져 있는지를 확실히 해주는 것입니다.
apt install -y libev-dev libhidapi-dev libgmp-dev pkg-config 를 통해 빌드 과정에 필요한 패키지들을 받아줍니다 패키지들이 설치되었다면 make build-deps 를 통해 패키지의 빌드를 진행해줍니다.
빌드가 완료되면 eval $(opam env)를 통해 opam 의 shell command 들을 사용할 수 있도록 해줍니다.
make를 입력하여 남은 설치 과정을 진행해줍니다.
설치가 완료되면 export PATH=~/tezos:$PATH 를 통해
편리하게 이용할 수 있도록 tezos 를 환경변수에 등록해줍니다.
source ./src/bin_client/bash-completion.sh 와
를 통해 bash-completion.sh 을 등록하고
export TEZOS_CLIENT_UNSAFE_DISABLE_DISCLAIMER=Y
를 통해 shell 변수를 환경 변수에 등록해줍니다.
ocaml 을 실행하여 설치가 제대로 되었는지를 확인해줍니다. OCaml 버전과 함께 스크립트가 실행된다면 설치가 정상적으로 완료된 것입니다.
#quit;; 를 통해 OCaml을 종료할 수 있습니다. 이렇게 해서 기나긴 설치가 완료되었으며, Docker를 사용하여 Tezos를 사용할 수 있는 개발 환경이 구축되었습니다. Vm ware를 사용했을 때와는 달리 우분투 이미지를 쉽게 받아 더욱 편리하고 빠르게 사용이 가능한 것을 알 수 있었습니다. 환경 구축을 따라 오시느라 수고가 많으 셨습니다. 다음 시간에는 베이킹을 알아보도록 하겠습니다.
작성자 : 김형준
개발팀 : 김승태, 김예서, 김형준