[ 새로운 가상화 오픈 플랫폼, Docker(도커) ] 도커, 넌 무엇이고 어떻게 쓰는 거냐?







도커에 대한 간단한 이해



Docker는 Go로 작성된 리눅스 컨테이너 런타임 패키징 오픈 플렛폼이다. 

Docker 엔진 컨테이너는 어플리케이션이 구동에 필요한 바이너리와 라이브러리만을 포함하여 하이퍼바이저 없이 OS의 격리된 프로세스로 작동하기 때문에 훨씬 가볍다. 반면  VM은 어플리케이션 뿐만 아니라 관련 바이너리와 라이브러리들 그리고 결정적인 차이인 OS 전체가 포함된다.  그림으로 보면 훨씬 이해하기 쉽다. 

VM웨어는 OS외에 Guest OS를 사용하므로 운영체제별로 각기 추가 OS의 구성과 리소스로 인해 훨씬 무겁다. 반면 Docker는 도커 엔진위에서 바이너리와 라이브러리 만을 가지고 APP을 구동시키므로 가볍고 신속하다. 또한 호환성이 뛰어난 큰 강점으로 많은 곳에서 상용화와 적용 중이다.



사진출처 - http://wildpup.cafe24.com/archives/645




도커, 설치부터 운영까지



1. 기본 설치

설치와 운영에 대한 다양한 포스팅과 영상이 인터넷상에 이미 존재한다. 2013년에 초기 발표이후, 우분투 전용이던 도커는 현재 리눅스버전와 윈도우 버전도 있을 것으로 예상된다. 실제 테스팅에서는 리눅스와 우분투 이미지만을 사용해서 컨테이너를 구성해보았다. 설치 방법은 크게 2가지로 분류된다. 자동 설치와 수동 설치인데 필자는 리눅스 자동 설치 스크립트를 활용하여 '훅'하고 설치를 완료했다.(정말 순식간이다...)

설치는 리눅스 자동 설치 스크립트인 아래의 명령어를 활용하였다.


sudo wget -qO- https://get.docker.com/ | sh


첫 설치에 .을 하나 빼먹어서 에러가 발생했는데 아쉽게도 스크린샷이 없다. 설치는 정말 순식간에 로그도 없이 끝난다. 설치가 된건가하는 의문을 가지고 도커 명령어를 실행해보면 잘 수행된다.

테스트 도커 명령어는 'sudo docker version'이 괜찮겠다.


명령어가 뜨는데 밑에 'username' is not in the sudoers file. (이하생략) 이라는 메시지가 뜰 것이다. (아래그림)



위 명령어는 sudo 권한 관련 문제인데 처음 설치시에 나왔던 명령어(아래)를 입력후 OS를 재부팅하게되면 출력되지 않는다. 여기서 egoing은 username이다. 예를들면 tom이라던가 root 정도일 것이다.


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


위 명령을 실행하고 재부팅하면 그 이후로는 sudo라는 명령어를 사용할 필요없이 도커가 루트권한을 가지게 된다.



2. 컨테이너 구성(이미지 다운로드)

이제 기본 도커가 설치되었다면 이미지를 가져와야된다. 컨테이너 구성에 사용될 이미지는 다음 명령어로 수행가능하다.

# docker pull centos:centos6

# docker pull ubuntu:latest

여기서 os 뒤에 붙는 :이하는 버전을 의미한다. latest는 가장 최신 버전을 받겠다는 의미이다. 뭘 받을지 모르겠다면 도커 공식 홈페이지 또는 아래의 명령어로 서칭가능하다.(아래그림)



3. 도커의 운영

도커 운영은 docker [명령어] [수행대상] 의 형태로 주로 운영된다. 도커 명령어 모음을 참조해도 좋다. 여기서는 간단한 몇가지만 소개한다.

docker run -i -t centos:latest bin/bash -> 최신 centos 이미지를 도커로 구동(이미지를 위에서 다운받은 것을 사용)

docker restart 87aca23f236c -> 실행되었던 도커를 재실행시킨다.(종료하거나 현재 구동 중이지 않은 도커 대상)

docker ps -a -> 현재 실행중인 도커를 보여주며 -a옵션은 과거의 도커까지 모두 보여준다.

docker images -> 현재 가진 도커 이미지를 보여준다. 



아래 링크를 참조해서 따라하면 도커의 설치부터 운영에 대한 기본 지식을 습득가능하다.





필자는 프로젝트를 수행하며 VM웨어를 많이 활용했고 현재도 VM웨어를 통해서 리눅스를 구동 후에 도커를 실행해보았다. 


PC상의 가상머신속의 또 다른 가상머신이라니, 참 묘하지 않은가? 


물른 아직 도커를 구동부터 간략한 운영만 해보았지 실제로 어떤 작업이나 운영에 사용하진 못했다. SSH를 통해 접속하여 컨트롤하거나 직접 들어가서 (위 그림의 root@d0d...9f:/#) 작업하는 형태의 컨트롤 방법이 있다는데 잘 되진 않더라. 리눅스 학습과 더불어 도크에 대한 연구를 통해 이 오픈소스가 왜 효율적이고 각광받는 기술인지 알아봐야 겠다는 마음입니다.



by 춤추는 공학도




Tags

Read Next