본문 바로가기

서버/Docker

도커 살짝 만져보기

subicura.com/2017/01/19/docker-guide-for-beginners-1.html

 

초보를 위한 도커 안내서 - 도커란 무엇인가?

도커를 처음 접하는 시스템 관리자나 서버 개발자를 대상으로 도커 전반에 대해 얕고 넓은 지식을 담고 있습니다. 도커가 등장한 배경과 도커의 역사, 그리고 도커의 핵심 개념인 컨테이너와 이

subicura.com

 

구글에 도커를 검색하면 가장 위에 뜨는 글이다.

subicura님이 정리하신 글인데, 다른 블로그에도 언급될 만큼 쉽게 설명이 되어 있다.

 

 

도커에 대해 쉽게 설명하자면, 도커는 컨테이너 기반의 오픈소스 가상화 플랫폼 이다.

이전 블로그 글에서 VM(Virtual Machine)을 이용하여 윈도우 환경에서 Linux 가상머신을 구축한 적이 있다.

 

이는 우리의 호스트 os인 윈도우 위에 linux os를 완전히 가상화 해서 쓰는 방식이다.

'하이퍼바이저'라는 다수의 OS를 실행하기 위한 논리적인 플랫폼 구분으로 컴퓨터를 나누고 그 위에 새로운 OS를 설치하는 방식이다. 이는 엄청 무겁다...

 

VirtualBox를 설치하여 사용해보면 알겠지만, 새로운 OS를 새로 설치하는 방식이므로 메모리와 기억장치의 용량을 상당부분 할애해야 한다.

 

 

 

하지만 도커를 이용한다면, 이 문제를 해결할 수 있다.

새로운 HOST OS와 커널을 공유하고, 격리된 하나의 프로세스처럼 동작하게 된다.

격리된 각각의 '프로세스'처럼 동작하기에, 새로운 'OS'를 설치하는 VM방식보다 훨~씬 가볍다.

이 방식을 '컨테이너' 라고 한다.

CPU, 메모리자원을 딱 필요한 만큼만 사용한다. 그리고 여러 컨테이너를 실행하면 서로 간섭도 전혀 없이 독립적으로 실행된다.

 

 

(도커와 VM의 차이)

www.leafcats.com/301

 

VM(가상머신) 과 컨테이너 가상화

하나의 물리적인 베어메탈 머신을 여러 머신으로 가상화 하여 분리하는 방식은 크게 VM(가상 머신)과 컨테이너 가상화로 구분된다. VM은 베어메탈 서버에 설치된 호스트 OS와 커널의 공유하지 않

www.leafcats.com

 

 

도커를 이용하면 OS뿐만 아니라, java, python, mysql 등등 여러 프로그램들도 컨테이너로 사용할 수 있다.

 

 

이미지는 도커를 이용해 어떤 에플리케이션을 사용할 때, 필요한 파일들의 집합이다.

도커 이미지는 Immutable하다. 변하지 않는다는 것이다.

 

도커 이미지에는 에플리케이션을 실행하기 위한 파일, 설정값 등이 모두 들어있기 때문에, 따로 의존성 파일을 설치하거나 할 필요가 없다.

이 도커 이미지를 실행하면, 도커 컨테이너가 되는 것이다.

 

우리는 서버를 scale-out 할 때에도, 이 이미지만 있으면 된다. 매번 서버를 구축할 때 마다 환경설정 해주고 의존성 파일 컴파일하고 할 필요 없이 이 이미지하나만 잘 만들어놓으면 매번 똑같은 환경을 구축할 수 있다.

 

에플리케이션을 개발을 진행할 때, 이 이미지를 만들기 위해서 dockerfile이라는 특수한 파일을 만든다. 이는 이미지를 만들기 위해 이미지에 들어갈 설치파일이라든지 위에 언급한 파일들을 명시해 놓는다.

 

도커파일을 통해 이미지를 만들면, github처럼 dockerhub에 우리의 이미지를 업로드 할 수 있다.

 

이후 어떤 환경에서든 이 이미지를 받아서 컨테이너로 만들면 처음 이미지로 만들었던 환경을 재현할 수 있는 것이다.