A sentimental robot

Docker 본문

Hyperledger fabric

Docker

GOD03219 2019. 7. 12. 14:37

이제 그 무겁던 VM은 이제 안녕! 도커라는 개쩌는 게 나왔다. 

 

도커에는 이미지와 컨테이너라는 두 가지 핵심 개념이 있다.

간단하게 말해서 이미지는 내가 사용하고 싶은 프로그램이 실행되기 위해 필요한 파일과 라이브러리이고,

컨테이너는 이미지가 실행되는 독립된 공간이며 컨테이너 상에서 이미지가 실행되기 때문에 프로세스라는 개념으로 이해할 수 있다.

 

도커는 기본적으로 리눅스 환경을 지원한다. 리눅스 사용자는 터미널을 통해 도커를 설치할 수 있지만 mac OS와 Windows를 사용하고 있다면 자세한 내용은 공식 홈페이지를 참고하자.  나는 맥 환경에서 도커를 써보기 위해 docker.dmg 패키지를 설치해 보았다. 

https://docs.docker.com/docker-for-mac/install/

 

Install Docker Desktop for Mac

To download Docker Desktop for Mac, head to Docker Hub. Download from Docker Hub What to know before you install README FIRST for Docker Toolbox and Docker Machine users If...

docs.docker.com

설치 후 설치가 잘 되었는지 확인하기 위해 터미널에서 명령어 몇 개를 쳐보자.

 

$ docker version 

내 컴퓨터에 설치된 도커 정보들이 쫘라락 뜰 것이다.

 

$ docker images 

docker hub에서 다운받은 이미지들의 목록을 출력하는 명령어이다. 테스트용 hello-world라는 이름의 이미지가 설치되어있을 것이다.

Repository는 도커 이미지의 이름이고 TAG는 이미지 버전이다. 

 

이렇게 설치 확인까지 했으면 예제를 통해 도커를 차근차근 알아가보자.

도커는 가상머신과 굉장히 유사하게 동작한다. 가상머신은 내 컴퓨터 안에 또 다른 가상의 컴퓨터이다. 가상 컴퓨터가 작동하기 위해선 OS도 설치해야겠징? 그렇기 때문에 굉장히 무겁다.

도커도 내 컴퓨터와 독립된 공간(컨테이너)에서 프로그램을 실행시키는 개념이지만 내 컴퓨터의 OS를 공유하기 때문에 훨씬 가볍고 빠르다.

솔직히 이렇게만 말해선 딱히 이해 안가고 어려울 수 있다. 나도 도커가 어렵고 추상적으로 느껴졌는데 명령어를 쳐가면서 이해하니 꽤 이해가 되었당! (도커 명령어도 외워지고 개이득 공부법)

내 컴퓨터는 맥인데 도커를 사용해 우분투의 패키지 매니저를 설치하고 사용해보자.

 

$ docker pull ubuntu:14.04 

docker hub에서 우분투 14.04 버전의 패키지 시스템이 구성된 이미지를 받아온다. 여기서 주목해야할 점은 우분투 운영체제를 받아오는게 아니라 패키지 매니저를 다운 받는 것이다.

 

$docker search ubuntu

도커 허브에 전세계 개발자들이 각자의 입맛대로 구성한 우분투 이미지들을 볼 수 있다. 앞에 id가 없는 게 공식 이미지이다.

 

$docker run -i -t ubuntu:14.04 /bin/bash

run 명령어는 컨테이너 생성 동시에 컨테이너 상 프로그램을 실행한다. 파일을 실행 상태로 만들어 놔야 컨테이너도 동작한다.  지정한 메인 실행파일이 종료가 되면 컨테이너도 종료된다.  설치된 운영체제를 부팅하는 것과 비슷한 개념이라고 보자.

/bin/bash 로 실행할 메인 실행파일을 지정한다.

 

$docker ps

현재 실행 중인 컨테이너를 확인한다.

 

$docker ps -a

all 옵션을 줘서 종료된 컨테이너들까지 확인한다.

 

$docker start jello 

start 명령어는 jello 컨테이너의 메일 실행 파일을 실행만 할 뿐 컨테이너로 들어가지 않는다.

jello는 도커가 자동으로 설정해준 컨테이너 이름이다.  

 

$docker attach jello 

jello 컨테이너로 들어간다.

컨테이너로 들어갔다가 exit 명령어로 bash창을 나오면 컨테이너를 빠져나오면 컨테이너는 죽는다.  ctrl+p+q 단축키로 컨테이너가 살아있는 채로 컨테이너를 빠져나올 수 있다. 

 

$docker stop jello

컨테이너 프로세스 종료하기

 

$docker rm jello

컨테이너 삭제

 

$docker rmi hello-world

이미지 삭제

 

Reference

https://www.youtube.com/watch?v=Bhzz9E3xuXY

 

'Hyperledger fabric' 카테고리의 다른 글

Docker 예제로 공부하기  (0) 2019.07.12
Mac OS 기본적인 터미널 명령어  (0) 2019.07.12
Transaction Process  (0) 2019.07.11
Hyperledger fabric 주요 개념  (0) 2019.07.10
Hyperledger fabric 구조  (0) 2019.07.10